| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847 |
- <appendix id="coding-standard">
- <title>Стандарт кодирования на PHP в Zend Framework'е</title>
- <sect1 id="coding-standard.overview">
- <title>Обзор</title>
- <sect2 id="coding-standard.overview.scope">
- <title>Область применения</title>
- <para>
- Этот документ предоставляет указания и ресурсы для разрабочиков
- и команд работающих на Zend Framework’ом. Освещаемые здесь темы:
- <itemizedlist>
- <listitem>
- <para>Форматирование PHP-файлов</para>
- </listitem>
- <listitem>
- <para>Соглашения по именованию</para>
- </listitem>
- <listitem>
- <para>Стиль кодирования</para>
- </listitem>
- <listitem>
- <para>Встроенная документация</para>
- </listitem>
- </itemizedlist>
- </para>
- </sect2>
- <sect2 id="coding-standard.overview.goals">
- <title>Цели</title>
- <para>
- Хороший стандарт кодирования важен в любом проекте, и особенно там,
- где множество разработчиков работают над одним проектом. Наличие
- стандарта кодирования помогает гарантировать, что код высокого
- качества, с меньшим количеством ошибок, и легко поддерживается.
- </para>
- </sect2>
- </sect1>
- <sect1 id="coding-standard.php-file-formatting">
- <title>Форматирование PHP-файлов</title>
- <sect2 id="coding-standard.php-file-formatting.general">
- <title>Общее</title>
- <para>
- Для файлов, содержащих только PHP-код, закрывающийся тег ("?>")
- не разрешен. Он не требуется синтаксисом PHP. Это предотвращает
- от случайного включения в вывод конечных пробелов.
- </para>
- <para>
- <emphasis>ВАЖНО:</emphasis> Включение бинарных файлов как разрешает <code>__HALT_COMPILER()</code>
- запрещено из любого PHP-файла Zend framework'а или файлов
- производных от него. Эта возможность разрешена для использования
- только в специальных инсталляционных скриптах.
- </para>
- </sect2>
- <sect2 id="coding-standard.php-file-formatting.indentation">
- <title>Отступы</title>
- <para>Для отступа используйте 4 пробела. Не используйте символ табуляции.</para>
- </sect2>
- <sect2 id="coding-standard.php-file-formatting.max-line-length">
- <title>Максимальная длина строки</title>
- <para>
- Рекомендуемая длина строки составляет 80 символов, т.е.
- разработчики должны стремиться держать код как можно ближе к
- 80-символьной границе, когда это возможно. Однако более длинные
- строки также допустимы. Максимальная длина любой строки PHP-кода
- не должна превышать 120 символов.
- </para>
- </sect2>
- <sect2 id="coding-standard.php-file-formatting.line-termination">
- <title>Переводы строк</title>
- <para>
- Переводы строк должны быть как принято для текстовых файлов в
- Unix-системах. Строки должны заканчиваться только символом
- перевода на новую строку (LF). Символ перевода на новую строку
- в десятичном виде представляется как число 10, или как 0x0A в
- шестнадцатеричном.
- </para>
- <para>
- Не используйте комбинацию символов возврата каретки/перевода
- строки (CRLF) как на Windows-компьютерах (0x0D, 0x0A).
- </para>
- </sect2>
- </sect1>
- <sect1 id="coding-standard.naming-conventions">
- <title>Соглашения по именованию</title>
- <sect2 id="coding-standard.naming-conventions.classes">
- <title>Классы</title>
- <para>
- Zend Framework использует схему именования классов, в
- соответсвтвии с которой имена классов напрямую указывают на
- директории, где они находятся. Корневой директорией Zend
- Framework'а является директория "Zend/", в которой иерархически
- расположены все классы.
- </para>
- <para>
- Имена классов могут содержать только буквенно-числовые символы.
- Числа допустимы в именах классов, но не приветствуются.
- Символы нижнего подчеркивания допустимы в местах разделителей
- пути - имя файла "Zend/Db/Table.php" должно указывать на класс
- с именем "Zend_Db_Table".
- </para>
- <para>
- Если имя класса состоит из более чем одного слова, то первая
- буква каждого слова должна быть заглавной. Последующие
- заглавные буквы недопустимы, например, имя класса "Zend_PDF" -
- недопустимо, в то время как имя "Zend_Pdf" допустимо.
- </para>
- <para>
- Классы Zend Framework'а написанных Zend'ом или одной из
- участвующих компаний-партнеров и распространяемых с фреймворком
- должны всегда начинаться с префикса "Zend_" и должны
- располагаться в директории "Zend/" в соответствии с иерархией.
- </para>
- <para>
- Ниже примеры допустимых имен классов:
- <programlisting role="php"><![CDATA[
- Zend_Db
- Zend_View
- Zend_View_Helper
- ]]></programlisting>
- <emphasis>ВАЖНО:</emphasis> Код, который оперирует с фреймворком,
- но не является его частью, например, код написанный пользователем
- фреймворка и это не компания Zend или один из партнеров по
- фреймворку, не должен начинаться с префикса "Zend_".
- </para>
- </sect2>
- <sect2 id="coding-standard.naming-conventions.interfaces">
- <title>Интерфейсы</title>
- <para>
- Интерфейсы должны следовать той же схеме именования, как и
- классы (смотрите выше), однако должны заканчиваться
- словом "Interface", как в следующих примерах:
- <programlisting role="php"><![CDATA[
- Zend_Log_Adapter_Interface
- Zend_Controller_Dispatcher_Interface]]></programlisting>
- </para>
- </sect2>
- <sect2 id="coding-standard.naming-conventions.filenames">
- <title>Имена файлов</title>
- <para>
- Для файлов допустимы буквенно-числовые символы, символы нижнего
- подчеркивания и тире ("-"). Пробелы запрещены.
- </para>
- <para>
- Любой файл содержащий PHP-код должен иметь расширение ".php".
- Это примеры показывают допустимые имена файлов для классов из
- примеров в секции выше:
- <programlisting role="php"><![CDATA[
- Zend/Db.php
- Zend/Controller/Front.php
- Zend/View/Helper/FormRadio.php]]></programlisting>
- Имена файлов отражаются на имена классов, как описано выше.
- </para>
- </sect2>
- <sect2 id="coding-standard.naming-conventions.functions-and-methods">
- <title>Функции и методы</title>
- <para>
- Имена функций могут содержать буквенно-числовые символы.
- Символы нижнего подчеркивания не разрешены. Числа разрешены в
- именах функций, но не приветствуются.
- </para>
- <para>
- Имена функций должны всегда начинатся с буквы в нижнем регистре.
- Когда имя функции состоит из более чем одного слова, первая
- буква каждого нового слова должна быть заглавной. Это обычно
- называется "верблюжьей" нотацией.
- </para>
- <para>
- Многословность приветствуется. Имена функций должны быть
- настолько говорящими, насколько это практично для повышения
- понимаемости кода.
- </para>
- <para>
- Это примеры допустимых имен функций:
- <programlisting role="php"><![CDATA[
- filterInput()
- getElementById()
- widgetFactory()]]></programlisting>
- </para>
- <para>
- Для объектно-ориентированного программирования принято, чтобы
- методы доступа имели префикс "get" или "set".
- Когда используются шаблоны проектирования, такие, как "синглтон"
- или "фабрика", имена методов должны содержать имя шаблона, чтобы
- можно было быстро узнать шаблон.
- </para>
- <para>
- Функции в глобальной области видимости ("плавающие функции")
- допустимы, но не приветствуются. Рекомендуется обрамлять такие
- функции в статические классы.
- </para>
- </sect2>
- <sect2 id="coding-standard.naming-conventions.variables">
- <title>Переменные</title>
- <para>
- Имена переменных могут содержать буквенно-числовые символы.
- Символы нижнего подчеркивания не разрешены. Числа разрешены в
- именах переменных, но не приветствуются.
- </para>
- <para>
- Для переменных - членов классов, определенных с помощью
- префиксов области видимости "private" или "protected", первый
- символ имени должен быть один символ нижнего подчеркивания. Это
- единственное допустимое использование символа нижнего
- подчеркивания в имени. Переменные - члены классов определенные
- с помощью префикса области видимости "public" никогда не должны
- начинаться с символа нижнего подчеркивания.
- </para>
- <para>
- Как и имена функций (смотрите секцию 3.3 выше) имена переменных
- должны начинаться с буквы в нижнем регистре и следовать
- "верблюжьей" нотации.
- </para>
- <para>
- Многословность приветствуется. Имена переменных должны быть
- настолько говорящими, насколько это практично. Краткие имена
- переменных, такие как "$i" и "$n" не приветствуются нигде,
- кроме как в контексте маленьких циклов. Если цикл содержит
- более 20 строк кода, то переменные для индексов должны иметь
- более говорящие имена.
- </para>
- </sect2>
- <sect2 id="coding-standard.naming-conventions.constants">
- <title>Константы</title>
- <para>
- Константы могут содержать буквенно-числовые символы и символы
- нижнего подчеркивания. Числа разрешены в именах констант.
- </para>
- <para>
- Имена констант должны быть в верхнем регистре.
- </para>
- <para>
- Константы должны быть определены как члены классов с
- использованием ключевого слова "const". Определение констант в
- глобальной области видимости с помощью "define" допустимо, но
- не рекомендуется.
- </para>
- </sect2>
- </sect1>
- <sect1 id="coding-standard.coding-style">
- <title>Стиль кодирования</title>
- <sect2 id="coding-standard.coding-style.php-code-demarcation">
- <title>Обрамление PHP-кода</title>
- <para>
- PHP-код должен всегда обрамлятся полными PHP-тегами:
- <programlisting role="php"><![CDATA[
- <?php
- ?>]]></programlisting>
- </para>
- <para>
- Короткие теги не допустимы.
- </para>
- </sect2>
- <sect2 id="coding-standard.coding-style.strings">
- <title>Строки</title>
- <sect3 id="coding-standard.coding-style.strings.literals">
- <title>Строковые литералы</title>
- <para>
- Когда строка является литеральной (не содержит подстановок
- переменных), для ее обрамления должны использоваться
- апострофы или "одинарные кавычки":
- <programlisting role="php"><![CDATA[
- $a = 'Example String';]]></programlisting>
- </para>
- </sect3>
- <sect3 id="coding-standard.coding-style.strings.literals-containing-apostrophes">
- <title>Строковые литералы, содержащие апострофы</title>
- <para>
- Когда строка литералов сама содержит апострофы, разрешается
- для обрамления строки использовать "двойные кавычки". Это
- особенно актуально для SQL-запросов:
- <programlisting role="php"><![CDATA[
- $sql = "SELECT `id`, `name` from `people` WHERE `name`='Fred' OR `name`='Susan'";]]></programlisting>
- Синтаксис выше является более предпочтительным, чем
- экранирование апострофов.
- </para>
- </sect3>
- <sect3 id="coding-standard.coding-style.strings.variable-substitution">
- <title>Подстановка переменных</title>
- <para>
- Подстановка переменных разрешается с использованием двух
- нижеприведенных форм:
- <programlisting role="php"><![CDATA[
- $greeting = "Hello $name, welcome back!";
- $greeting = "Hello {$name}, welcome back!";]]></programlisting>
- </para>
- <para>
- Для надежности, эта форма не допустима:
- <programlisting role="php"><![CDATA[
- $greeting = "Hello ${name}, welcome back!";]]></programlisting>
- </para>
- </sect3>
- <sect3 id="coding-standard.coding-style.strings.string-concatenation">
- <title>Конкатенация строк</title>
- <para>
- Строки должны объединятся с помощью оператора ".". Пробел
- должен всегда добавлятся до и после оператора "." для
- улучшения читабельности:
- <programlisting role="php"><![CDATA[
- $company = 'Zend' . 'Technologies';]]></programlisting>
- </para>
- <para>
- Когда производится конкатенация строк с помощью оператора
- ".", разрешается разрывать выражение на несколько строк для
- улучшения читабельности. В этом случае, каждая следующая
- строка должна быть дополнена пробелами так, чтобы оператор
- "." был выровнен под оператором "=":
- <programlisting role="php"><![CDATA[
- $sql = "SELECT `id`, `name` FROM `people` "
- . "WHERE `name` = 'Susan' "
- . "ORDER BY `name` ASC ";]]></programlisting>
- </para>
- </sect3>
- </sect2>
- <sect2 id="coding-standard.coding-style.arrays">
- <title>Массивы</title>
- <sect3 id="coding-standard.coding-style.arrays.numerically-indexed">
- <title>Массивы с числовыми индексами</title>
- <para>Отрицательные числа в качестве индексов запрещены.</para>
- <para>
- Хотя индекс массива может начинаться с отрицательного числа,
- но это не приветствуется и рекомендуется, чтобы все
- массивы начинали индексирование с 0.
- </para>
- <para>
- Когда определяется индексированный массив с помощью
- конструкции <code>array</code>, завершающий пробел должен
- быть добавлен после каждой запятой для улучшения
- читабельности:
- <programlisting role="php"><![CDATA[
- $sampleArray = array(1, 2, 3, 'Zend', 'Studio');]]></programlisting>
- </para>
- <para>
- Также разрешается определять многострочные индексированные
- массивы, используя конструкцию "array". В этом случае,
- каждая следующая строка должна быть дополнена пробелами
- так, чтобы начало каждой строки было выравнено как показано
- ниже:
- <programlisting role="php"><![CDATA[
- $sampleArray = array(1, 2, 3, 'Zend', 'Studio',
- $a, $b, $c,
- 56.44, $d, 500);]]></programlisting>
- </para>
- </sect3>
- <sect3 id="coding-standard.coding-style.arrays.associative">
- <title>Ассоциативные массивы</title>
- <para>
- Когда определяется ассоциативный массив с помощью
- конструкции "array", приветствуется разделение выражения на
- несколько строк. В этом случае, каждая следующая строка
- должна быть дополнена с помощью пробелов так, чтобы и ключи
- и значения были выровнены:
- <programlisting role="php"><![CDATA[
- $sampleArray = array('firstKey' => 'firstValue',
- 'secondKey' => 'secondValue');]]></programlisting>
- </para>
- </sect3>
- </sect2>
- <sect2 id="coding-standard.coding-style.classes">
- <title>Классы</title>
- <sect3 id="coding-standard.coding-style.classes.declaration">
- <title>Определение класса</title>
- <para>
- Классы должны определяться по следующей схеме.
- </para><para>
- Фигурная скобка всегда пишется на следующей строке под
- именем класса.
- </para><para>
- Каждый класс должен иметь блок документации (doc-блок) в
- соответствии со стандартом PHPDocumentor.
- </para><para>
- Код внутри класса должен иметь отступ в четыре пробела.
- </para><para>
- Только один класс разрешен внутри одного PHP-файла.
- </para><para>
- Размещение дополнительно кода в файле с классом разрешено,
- но не приветствуется. В таких файлах, две пустые строки
- должны разделять класс и дополнительный PHP-код.
- </para><para>
- Это пример допустимого определения класса:
- <programlisting role="php"><![CDATA[
- /**
- * Doc-блок здесь
- */
- class SampleClass
- {
- // содержимое класса должно быть
- // с отступом в четыре пробела
- }]]></programlisting>
- </para>
- </sect3>
- <sect3 id="coding-standard.coding-style.classes.member-variables">
- <title>Переменные-члены классов</title>
- <para>
- Переменные-члены классов должны определяться по следующей схеме.
- </para><para>
- Любые переменные, определенные в классе, должны быть
- определены в начале класса, до определения любого метода.
- </para><para>
- Ключевое слово <code>var</code> не разрешено. Члены класса
- должны всегда определять их область видимости, используя
- ключевое слово <code>private</code>, <code>protected</code>
- или <code>public</code>. Доступ к переменным-членам
- класса напрямую используя префикс <code>public</code>
- разрешено, но не приветствуется в пользу методов
- доступа (set/get).
- </para>
- </sect3>
- </sect2>
- <sect2 id="coding-standard.coding-style.functions-and-methods">
- <title>Функции и методы</title>
- <sect3 id="coding-standard.coding-style.functions-and-methods.declaration">
- <title>Определение функций и методов</title>
- <para>
- Функции должны определяться по следующей схеме.
- </para><para>
- Функции внутри классов должны всегда определять свою область
- видимости с помощью одного из префиксов <code>private</code>,
- <code>protected</code> или <code>public</code>.
- </para><para>
- Как и у классов, фигурная скобка всегда пишется на
- следующей строке под именем функции. Пробелы между именем
- функции и круглой скобкой для аргументов отсутствуют.
- </para><para>
- Функции в глобальной области видимости крайне не приветствуются.
- </para><para>
- Это пример допустимого определения функции:
- <programlisting role="php"><![CDATA[
- /**
- * Doc-блок здесь
- */
- class Foo
- {
- /**
- * Doc-блок здесь
- */
- public function bar()
- {
- // содержимое класса должно быть
- // с отступом в четыре пробела
- }
- }]]></programlisting>
- </para>
- <para>
- <emphasis>ЗАМЕЧАНИЕ:</emphasis> Передача по ссылке допустима только в определениях функций:
- <programlisting role="php"><![CDATA[
- /**
- * Doc-блок здесь
- */
- class Foo
- {
- /**
- * Doc-блок здесь
- */
- public function bar(&$baz)
- {}
- }]]></programlisting>
- </para>
- <para>
- Передача по ссылке во время вызова запрещена.
- </para>
- <para>
- Возвращаемое значение не должно обрамляться в круглые
- скобки, иначе это ухудшает читабельность, а также может
- поломать код, если метод позже станет возвращать
- результат по ссылке.
- <programlisting role="php"><![CDATA[
- /**
- * Doc-блок здесь
- */
- class Foo
- {
- /**
- * ПЛОХО
- */
- public function bar()
- {
- return($this->bar);
- }
- /**
- * ХОРОШО
- */
- public function bar()
- {
- return $this->bar;
- }
- }]]></programlisting>
- </para>
- </sect3>
- <sect3 id="coding-standard.coding-style.functions-and-methods.usage">
- <title>Использование функций и методов</title>
- <para>
- Аргументы функции разделяются одним завершающим пробелом
- после каждой запятой. Это пример допустимого вызова функции
- для функции, которая принимает три аргумента:
- <programlisting role="php"><![CDATA[
- threeArguments(1, 2, 3);]]></programlisting>
- </para>
- <para>
- Передача по ссылке во время вызова запрещена. Смотрите
- секцию определения функций для правильного способа передачи
- аргументов функции по ссылке.
- </para><para>
- Для функций, чьи аргументы допускают массив, вызов функции
- может включать конструкцию "array" и может быть разделено
- на несколько строк для улучшения читабельности. В этом
- случае, применим стандарт описания массивов:
- <programlisting role="php"><![CDATA[
- threeArguments(array(1, 2, 3), 2, 3);
- threeArguments(array(1, 2, 3, 'Zend', 'Studio',
- $a, $b, $c,
- 56.44, $d, 500), 2, 3);]]></programlisting>
- </para>
- </sect3>
- </sect2>
- <sect2 id="coding-standard.coding-style.control-statements">
- <title>Управляющие структуры</title>
- <sect3 id="coding-standard.coding-style.control-statements.if-else-elseif">
- <title>If / Else / Elseif</title>
- <para>
- Управляющие структуры, основанные на конструкциях
- <code>if</code> и <code>elseif</code>, должны иметь один
- пробел до открывающей круглой скобки условия, и один
- пробел после закрывающей круглой скобки.
- </para>
- <para>
- Внутри выражения условия между круглыми скобками
- операторы должны разделяться пробелами для читабельности.
- Внутренние скобки приветствуются для улучшения логической
- группировки больших условий.
- </para>
- <para>
- Открывающаяся фигурная скобка пишется на той же строке,
- что и условие. Закрывающаяся фигурная скобка пишется на
- отдельной строке. Все содержимое между скобками пишется с
- отступом в четыре пробела.
- <programlisting role="php"><![CDATA[
- if ($a != 2) {
- $a = 2;
- }]]></programlisting>
- </para>
- <para>
- Для выражения "if", включая "elseif" или "else",
- форматирование должно быть таким, как в следующем примере:
- <programlisting role="php"><![CDATA[
- if ($a != 2) {
- $a = 2;
- } else {
- $a = 7;
- }
- if ($a != 2) {
- $a = 2;
- } elseif ($a == 3) {
- $a = 4;
- } else {
- $a = 7;
- }]]></programlisting>
- PHP допускает написание таких выражений без фигурных скобок
- при некоторых условиях. Стандарт кодирования не делает
- различий - для всех "if", "elseif" или "else" выражений
- необходимо использовать фигурные скобки.
- </para>
- <para>
- Использование "elseif" конструкции допускается, но крайне
- не приветствуется в пользу "else if" комбинации.
- </para>
- </sect3>
- <sect3 id="coding-standards.coding-style.control-statements.switch">
- <title>Switch</title>
- <para>
- Управляющие структуры написанные с использованием "switch"
- конструкции должны иметь один пробел до открывающей
- круглой скобки условного выражения, и также один пробел
- после закрывающей круглой скобки.
- </para>
- <para>
- Все содержимое между фигурными скобками пишется с отступом
- в четыре пробела. Содержимое каждого "case" выражения
- должно писаться с отступом в дополнительные четыре пробела.
- </para>
- <programlisting role="php"><![CDATA[
- switch ($numPeople) {
- case 1:
- break;
- case 2:
- break;
- default:
- break;
- }]]></programlisting>
- <para>
- Ключевое слово <code>default</code> никогда не должно
- опускаться в выражении <code>switch</code>.
- </para>
- <para>
- <emphasis>ЗАМЕЧАНИЕ:</emphasis> Иногда полезно писать
- <code>case</code> выражения, которые передают управление
- следующему <code>case</code> выражению, опуская
- <code>break</code> или <code>return</code>. Для того, чтобы
- отличать такие случаи от ошибок, каждое <code>case</code>
- выражение, где опущен <code>break</code> или
- <code>return</code>, должно содержать комментарий
- "// break intentionally omitted".
- </para>
- </sect3>
- </sect2>
- <sect2 id="coding-standards.inline-documentation">
- <title>Встроенная документация</title>
- <sect3 id="coding-standards.inline-documentation.documentation-format">
- <title>Формат документации</title>
- <para>
- Все блоки документации ("doc-блоки") должны быть
- совместимы с форматом phpDocumentor. Описание формата
- phpDocumentor вне рамок данного докумета. Для дополнительно
- информации смотрите: <ulink url="http://phpdoc.org/">http://phpdoc.org/</ulink>
- </para>
- <para>
- Все файлы с исходными кодами, написанные для Zend
- Framework'а, или которые оперируют с фреймворком, должны
- содержать "файловые" doc-блоки в начале каждого файла и
- "классовый" doc-блок непосредственно перед каждым классом.
- Ниже даны примеры таких doc-блоков.
- </para>
- </sect3>
- <sect3 id="coding-standards.inline-documentation.files">
- <title>Файлы</title>
- <para>
- Каждый файл, содержащий PHP-код должен иметь заголовочный
- блок в начале файла, содержащий как минимум следующие
- phpDocumentor-теги:
- <programlisting role="php"><![CDATA[
- /**
- * Краткое описание файла
- *
- * Длинное описание файла (если есть)...
- *
- * LICENSE: Some license information
- *
- * @copyright 2005 Zend Technologies
- * @license http://www.zend.com/license/3_0.txt PHP License 3.0
- * @version $Id:$
- * @link http://dev.zend.com/package/PackageName
- * @since File available since Release 1.2.0
- */]]></programlisting>
- </para>
- </sect3>
- <sect3 id="coding-standards.inline-documentation.classes">
- <title>Классы</title>
- <para>
- Каждый класс должен иметь doc-блок, содержащий как
- минимум следующие phpDocumentor-теги:
- <programlisting role="php"><![CDATA[
- /**
- * Краткое описание класса
- *
- * Длинное описание класса (если есть)...
- *
- * @copyright 2005 Zend Technologies
- * @license http://www.zend.com/license/3_0.txt PHP License 3.0
- * @version Release: @package_version@
- * @link http://dev.zend.com/package/PackageName
- * @since Class available since Release 1.2.0
- * @deprecated Class deprecated in Release 2.0.0
- */]]></programlisting>
- </para>
- </sect3>
- <sect3 id="coding-standards.inline-documentation.functions">
- <title>Функции</title>
- <para>
- Каждая функция, включая методы объектов, должна иметь
- doc-блок, содержащий как минимум:
- <itemizedlist>
- <listitem><para>Описание функции</para></listitem>
- <listitem><para>Все аргументы</para></listitem>
- <listitem><para>Все возможные возвращаемые значения</para></listitem>
- </itemizedlist>
- </para>
- <para>
- Нет надобности использовать тег "@access", потому что
- область видимости уже известна из ключевых слов "public",
- "private" или "protected". используемых при определении
- функции.
- </para>
- <para>
- Если функция/метод может выбрасывать исключение,
- используйте тег @throws:
- <programlisting role="php"><![CDATA[
- @throws exceptionclass [описание]
- ]]></programlisting>
- </para>
- </sect3>
- </sect2>
- </sect1>
- </appendix>
- <!--
- vim:se ts=4 sw=4 et:
- -->
|