Рассылка закрыта
При закрытии подписчики были переданы в рассылку "Заметки Дизайнера" на которую и рекомендуем вам подписаться.
Вы можете найти рассылки сходной тематики в Каталоге рассылок.
← Октябрь 2006 → | ||||||
1
|
||||||
---|---|---|---|---|---|---|
2
|
3
|
4
|
5
|
7
|
8
|
|
9
|
10
|
11
|
12
|
14
|
15
|
|
16
|
17
|
18
|
19
|
21
|
22
|
|
23
|
24
|
25
|
26
|
28
|
29
|
|
30
|
31
|
Статистика
-2 за неделю
ZEND FRAMEWORK: Стандарты кодирования
Вниманию читателей!Отдельные выпуски рассылки в той или иной мере взаимосвязаны; особенно, это относится к материалам практических занятий. С предыдущими выпусками Вы можете ознакомиться:
Кроме того, для чтения в онлайне доступен сборник статей, составленный на основе выпусков рассылки. # # # Вы также можете подписаться на рассылку "PHP 5 для начинающих". |
PHP 5: Новые возможности.Содержание В предлагаемом материале освещены стандарты кодирования, рекомендуемые для применения вместе с Zend Framework как отдельными разработчиками, так и командами разработчиков, и касающиеся следующих тем.
Zend Framework, как и PEAR [10], использует свои стандарты кодирования [9], применение которых особенно продуктивно в случае командной разработки приложений. Стандартизация позволяет добиться более высокого качества кода, минимизировать количество ошибок, облегчить управление проектом и т. д.
Закрывающий тэг. В файлах, содержащих только PHP код, использование закрывающего PHP тэга (
Отступы. В качестве отступа используется последовательность, состоящая из четырех пробелов. Символ табуляции не используется. Длина строк. Следует стремиться к тому, чтобы длина строк не превышала 80 символов. Однако, допустимы и более длинные строки. Максимальная длина любой строки PHP кода составляет 120 символов. Перевод строк. Используются переводы строк в стиле Unix (LF; код 0x0A), но не в стиле Macintosh (CR; код 0x0D) или Windows (CRLF; коды 0x0D, 0x0A). Классы. Названия классов должны находиться в прямой зависимости от директорий, в которых они хранятся. Корневой директорией для классов Zend Framework является директория Названия классов могут содержать только буквенно-цифровые символы; однако, использование цифр не рекомендуется. Знаки подчеркивания разрешены
только в качестве замены путевого разделителя (например, класс Если название класса состоит из нескольких слов, то каждое новое слово должно начинаться с прописной буквы. Следующие одна за другой заглавные буквы не разрешаются (так, например, следует использовать Названия классов, входящих в поставку Zend Framework, должны всегда начинаться с
Интерфейсы. Названия интерфейсов должны во всем следовать соглашениям, принятым для классов (см. Классы), за исключением того, что они всегда должны иметь окончание _Interface. Файлы. Для названий всех других файлов разрешены только буквенно-цифровые символы, знаки подчеркивания ( Функции и методы. Названия функций могут содержать только буквенно-цифровые символы, но использование цифр не рекомендуется. Использование знаков подчеркивания не разрешается. ГвоздиСоШляпками, или ГорбыНаСпинеВерблюда Из-за того, что прописные буквы в начале слов, образующих названия функций, похожи на гвозди с большими шляпками или на верблюжьи горбы, такой метод именования функций образно называется studlyCaps[4], camelCaps[5] [9] и т. д. (всего существует более дюжины аналогичных названий этого метода [1]). Названия функций должны всегда начинаться со строчной буквы. Если название состоит из нескольких слов, каждое слово (начиная
со второго) должно начинаться с прописной буквы (например:
Названия акцессоров всегда должны начинаться с Глобальные функции допустимы, но нежелательны. Вместо них предпочтительнее использовать статические методы классов. Переменные. Названия переменных могут содержать только буквенно-цифровые символы, но использование цифр не рекомендуется. Использование знаков подчеркивания не разрешается (за исключением первого символа в названиях
свойств класса, объявленных как приватные (
Подобно названиям функций и методов (см. Функции и методы), названия переменных должны начинаться со строчной буквы и следовать соглашению об использовании прописных букв в начале каждого слова, образующего название переменной. Многословные названия приветствуются, если они облегчают понимание кода.
Константы. Названия констант могут содержать как буквенно-цифровые символы, так и знаки подчеркивания. В отличие от названий функций (см. Функции и методы) и переменных (см. Переменные), о нежелательности использования цифр в названиях констант не заявляется. Все буквы в названиях констант должны
быть прописными; поэтому для разделения слов следует использовать знаки подчеркивания (например, Константы следует объявлять как члены класса, используя конструктор Для отграничения PHP кода всегда используется полная форма тэгов (
Литералы. Если строка не содержит переменных, вместо которых должны быть подставлены их значения, то для ее отграничения следует использовать одинарные кавычки. $str = 'Foo'; Литералы, содержащие апострофы. Если в строковом литерале встречаются апострофы, то его разрешается отграничивать с помощью двойных кавычек (это особенно касается SQL выражений). $sql = "SELECT 'id' FROM 'table' WHERE 'foo'='bar' OR 'bar'='foo'"; Подстановка переменных. Использование подстановки переменных требует применения двойных кавычек. Переменные могут быть заключены в фигурные скобки. $hello = "Hello, $name!"; $hello = "Hello, {$name}!";
Слияние. Для слияния строк используется оператор конкатенции ( $str = 'Foo' . 'Bar';
С числовыми индексами. Индексация массивов может начинаться с любого неотрицательного числа, но рекомендуется всегда использовать в качестве начального индекса только При объявлении индексированных массивов
с помощью конструктора $a = array(777, M_PI, $foo, 'bar'); Если количество элементов слишком большое, разрешаются многострочные объявления; при этом последующие строки необходимо выравнивать по отношению к первому элементу. $a = array($a, $b, $c, $d[0], $d[1], $d[2], 'foo', 'bar'); Ассоциативные. При объявлении с помощью конструктора $a = array($foo => $bar, 'somekey' => 'value'); Объявление. Классы должны объявляться в соответствии с соглашением об именах (см. Классы). Каждая из фигурных скобок, окружающих тело класса, должна находиться на отдельной строке, без каких-либо отступов[6]. Для кода в теле класса используется отступ в четыре пробела. Объявлению класса должен предшествовать блок встроенной документации. /** * Class Documentation Block */ class FooClass { // code intended 4 spaces } В одном файле может быть определен только один класс. Дополнительный код (вне класса) не приветствуется, но, если все же используется, то должен быть отделен от класса двумя пустыми строками. Свойства. Названия свойств класса должны следовать соглашениям об именах (Переменные) и располагаться в самом начале класса до объявления каких-либо методов. Использование конструктора Объявление. Названия функций должны следовать соглашениям об именах (Функции и методы). Между названием функции и открывающей круглой скобкой для аргументов не должно быть ни одного пробела. Для методов класса всегда должна быть объявлена видимость с помощью модификаторов
доступа /** * Function Documentation Block */ function foo() { // code intended 4 spaces } Глобальные функции настоятельно не рекомендуются. Передача по ссылке разрешается только в объявлении функции, но не при ее вызове. Возвращаемая величина не должна быть заключена в скобки - это повышает читабельность и предотвращает возможные ошибки, если в будущем функция будет изменена таким образом, чтобы возвращать значение по ссылке. Использование. При вызове функции передаваемые ей параметры следует разделять запятыми, после каждой из которых должен следовать один пробел.
Передача параметров по ссылке при вызове функции запрещена (но разрешена в ее объявлении). При вызове функций, принимающих массив, допустимо непосредственной использование конструктора foo(array($a, $b, $c, $d[0], $d[1], $d[2], 'foo', 'bar'), 'x', 'y', 'z');
if ($x == 1) { // code intended 4 spaces } elseif (($y == 2) || ($z == 3)) { // code intended 4 spaces } else { // code intended 4 spaces } Рекомендуется отдавать предпочтение конструкции
switch ($foo) { case 1: break; case 2: // break intentionally omitted case 3: break; default: break; } Формат. Все блоки документации должны быть совместимы с форматом phpDocumentor (http://phpdoc.org/). Наличие блоков уровня файла и класса является обязательным. Файлы. Каждый файл, содержащий PHP код должен иметь в своем начале блок документации со следующим минимумом тэгов (приведены примерные значения). /** * Short file description * * Long file description (optional)... * * LICENSE: Permissions are granted to... * * @copyright 2006 Pterodactyl's School * @license http://www.zend.com/license/3_0.txt PHP License 3.0 * @version CVS: $Id:$ * @link http://pterodactyl.l2p.net/download/PackageName/ * @since 1.2.0 */ Классы. Каждый класс должен быть предварен блоком документации со следующим минимумом тэгов (приведены примерные значения). /** * Short class description * * Long class description (optional)... * * @copyright 2006 Pterodactyl's School * @license http://www.zend.com/license/3_0.txt PHP License 3.0 * @version Release: @package_version@ * @link http://pterodactyl.l2p.net/download/PackageName/ * @since 1.2.0 * @deprecated 2.0.0 */ Функции. Каждая функция, включая методы классов, должна быть предварена блоком документации, включающей, как минимум, описание функции, ее аргументы и возможные возвращаемые значения. Необходимость в использовании тэга @throws exceptionclass [description]
|
В избранное | ||