К сожалению, далеко не все следуют стандартам кодирования ZF при разработке своих скриптов. Признаюсь, и я нередко отступаю от них, а иногда и вовсе забываю некоторые моменты. Поэтому и пишу эту краткую памятку по их использованию.
- Форматирование PHP-файлов
- Для файлов, содержащих только PHP-код, закрывающий тег (?>) не разрешён
- Отступ – 4 пробела
- Рекомендуемый предел длины строки – 80 символов. Максимальная длина – 120.
- Unix-style перевод строки (\n)
- Соглашения по именованию
- Классы
- Имена классов могут содержать только буквенно-числовые символы. Числа разрешены, но не рекомендуются.
- Если имя класса состоит из более чем одного слова, то первая буква каждого слова должна быть заглавной. Последующие заглавные буквы недопустимы.
- Символы нижнего подчеркивания допустимы в местах разделителей пути – имя файла “Zend/Db/Table.php” должно указывать на класс с именем “Zend_Db_Table”.
- Код, написанный пользователем фреймворка и не являющийся его частью, не может иметь префикс “Zend_”
- Интерфейсы именуются так же, как и классы, с обязательным словом Interface в конце имени (Zend_Log_Adapter_Interface)
- В именах файлов допустимы буквенно-числовые символы, символы нижнего подчеркивания и тире (“-”). Пробелы запрещены.
- Функции и методы
- Имена функций могут содержать буквенно-числовые символы. Символы нижнего подчеркивания не разрешены. Числа разрешены в именах функций, но не приветствуются.
- “Верблюжья” нотация
- Многословность приветствуется
- “Плавающие” функции не рекомендуются
- Методы доступа должны иметь префикс get и set
- При использовании паттернов проектирования, имена методов должны содержать имя паттерна
- Переменные
- Имена переменных могут содержать буквенно-числовые символы. Символы нижнего подчеркивания не разрешены. Числа разрешены в именах переменных, но не приветствуются.
- private и protected свойства классов должны начинаться с символа “_”
- “Верблюжья” нотация
- Многословность приветствуется
- Короткие имена переменных ($i, $j) разрешены только в циклах менее 20 строк
- Константы
- Могут содержать буквенно-числовые символы и символы нижнего подчеркивания. Числа разрешены в именах констант.
- Имена должны быть в верхнем регистре
- Использование констант глобальной области видимости не рекомендуется
- Классы
- Стиль кодирования
- Только полные PHP-теги (<?php ?>)
- Строки
- Литеральные строки обрамляются апострофами
- Литеральные строки, содержащие апострофы, обрамляются двойными кавычками
- Допустимые формы подстановки переменных: “Hello $name”, “Hello {$name}”
- При конкатенации строк “.” обрамляется пробелами с обоих сторон
- Когда производится конкатенация строк с помощью оператора “.”, разрешается разрывать выражение на несколько строк для улучшения читабельности. В этом случае, каждая следующая строка должна быть дополнена пробелами так, чтобы оператор “.” был выровнен под оператором “=”
- Массивы
- Отрицательные числа в качестве индексов запрещены
- При определении массива с помощью array() завершающий пробел должен быть добавлен после каждой запятой
- Классы
- Фигурная скобка всегда пишется на следующей строке под именем класса
- Обязательный doc-блок
- Только один класс разрешен внутри одного PHP-файла
- Любые переменные, определенные в классе, должны быть определены в начале класса, до определения любого метода
- Ключевое слово var не разрешено
- Члены класса должны всегда определять их область видимости, используя ключевое слово private, protected или public
- Доступ к переменным-членам класса напрямую используя префикс public разрешено, но не приветствуется в пользу методов доступа (set/get)
- Функции и методы
- Функции внутри классов должны всегда определять свою область видимости с помощью одного из префиксов private, protected или public
- Фигурная скобка всегда пишется на следующей строке под именем функции
- Пробелы между именем функции и круглой скобкой для аргументов отсутствуют
- Обязательный doc-блок
- При вызове функции аргументы разделяются одним завершающим пробелом после каждой запятой
- Управляющие структуры
- Управляющие структуры, основанные на конструкциях if, elseif и switch, должны иметь один пробел до открывающей круглой скобки условия, и один пробел после закрывающей круглой скобки
- Внутри выражения условия между круглыми скобками операторы должны разделяться пробелами для читабельности
- Внутренние скобки приветствуются для улучшения логической группировки больших условий
- Открывающаяся фигурная скобка пишется на той же строке, что и условие. Закрывающаяся фигурная скобка пишется на отдельной строке.
- Конструкции без фигурных скобок запрещены
- В конструкции switch содержимое каждого “case” выражения должно писаться с отступом в 4 пробела
- Ключевое слово default обязательно
- Иногда полезно писать case выражения, которые передают управление следующему case выражению, опуская break или return. Для того, чтобы отличать такие случаи от ошибок, каждое case выражение, где опущен break или return, должно содержать комментарий “// break intentionally omitted”.
- Все doc-блоки должны быть совместимы с форматом phpDocumentor
Kirby says:
Хорошая памятка
Все собрано в кучу.
4 июня 2010, 14:45А что по поводу использования в темплитах myVar;?>
Есть какие-то соображения? Пункт 3.1 я видел. Но все же замечал мануале ZF такой кодинг.