Стандарты кодирования
Стандарт кодирования - Coding Style или Стиль программирования - Programming style.
К стандартам кодирования можно отнести правила именования классов, количество отступов или табуляции.
Обычно каждый класс хранится в отдельно созданном для него файле, вместо того чтобы каждый файл (класс) включать в файл инициализации - применяют функцию автозагрузки. Функция автозагрузки вызывается в тех случаях, когда в сценарии делается попытка создания экземпляра класса, но сам класс к этому времени еще не был загружен. То есть это средство позволяет загружать файлы в сценарий по требованию.
Имя класса должно содержать путь к файлу с описанием класса, например класс с именем MyClass_Users должен располагаться в директории MyClass и файл должен иметь имя Users.php. Символы нижнего подчеркивания допустимы в местах разделителей пути - имя файла "Zend/Db/Table.php" должно указывать на класс с именем "Zend_Db_Table".
Стандарт PSR-0/1/2 для PHP
Homepage: PSR-0/1/2 и RU: PSR-0/1/2
PSR (Proposing a Standards Recommendation) рекомендации к стандартам оформления кода на PHP принятые группой взаимодействия фреймворков PHP-FIG. Сводную таблицу соответствия требованиям различных PHP проектов стандарту PSR можно посмотреть по ссылке PHP Coding Style Notes.
Стандарт PSR состоит из трех разделов:
PSR-0 - Стандарт описывает именование классов в пространствах имен (namespace) для их автозагрузки. Имя класса должно содержать путь к файлу с описанием класса, например класс с именем MyClass_Users должен располагаться в директории MyClass и файл должен иметь имя Users.php. Т.е. символ нижнее подчеркивание "_" в имени класса заменяется на DIRECTORY_SEPARATOR (разделитель директорий).
\namespace\package_name\MyClass_Users => /path/to/project/lib/vendor/namespace/package_name/MyClass/Users.php
PSR-1 - Базовые стандарты оформления кода. Секция описывает общие правила оформления кода.
Namespaces and classes должны отвечать PSR-0
Использование только тэгов <?php ?> и <?= ?>
Только UTF-8 без BOM для PHP кода
Не допустимо смешивать в одном файле объявления классов, функций, констант и делать echo, ini_set и т.д. Т.е. не мешать все в кучу.
Именовать классы НадоТак
Константы класса ДОЛЖНЫ_БЫТЬ_ТАКИМИ
Методы должны бытьТакими
PSR-2 - Руководство по Code Style. Ниже только часть правил, остальные смотреть на GitHub.
Обязан соответствовать PSR-1.
Для отступов использовать 4 пробела вместо табуляции.
Желательно, чтобы строка не была длиннее 120 символов.
Нужно оставить пустую строку после use и блока namespace директив.
Фигурная скобка ‘{‘ должна быть на следующей строке после объявления имени класса, а закрывающая ‘}’ должна быть на следующей строке после тела класса.
Тот же порядок соблюдать для функций
public/protected/private (видимость) объявлять явно у каждого метода и функции класса; abstract/final объявлять до видимости; static объявлять после видимости. Например, final public static boo().
Разделять пробелом имя управляющей конструкции (if, elseif, while, for, foraech, try-catch) и скобку. Не допустимы пробелы между круглыми скобками и их содержимым. Первая фигурная скобка в конце строки, например:
if ($a === $b) {
return false;
}
PHP_CodeSniffer
Пакет CodeSniffer позволяет определить отвечает ли ваш код стандарту кодирования, например PEAR, Zend, PSR-1/2 и др. для файлов PHP, JavaScript и Основы работы с CSS. Он также позволяет создать свой стандарт кодирования и применять его к своим проектам. При помощи плагина phpcsmd CodeSniffer интегрируется в IDE NetBeans.
Установка PHP_CodeSniffer из репозитория ОС
# aptitude install php-codesniffer
Установка PHP_CodeSniffer последней версии из PEAR
# pear install PHP_CodeSniffer
# phpcs --version
PHP_CodeSniffer version 1.4.0 (stable) by Squiz Pty Ltd. (http://www.squiz.com.au)
Ключ -i позволяет вывести стандарты кодирования, которые поддерживает пакет CodeSniffer (PHPCS, PSR1, PEAR, Zend, MySource, PSR2, Squiz):
$ phpcs -i
The installed coding standards are PHPCS, PSR1, PEAR, Zend, MySource, PSR2 and Squiz
Проверим файл на соответствие стандарту
PEAR Coding Standards и выведем только суммарную информацию
$ phpcs --standard=PEAR --report=summary /tmp/viewfiles.php
PHP CODE SNIFFER REPORT SUMMARY
--------------------------------------------------------------------------------
FILE ERRORS WARNINGS
--------------------------------------------------------------------------------
/tmp/viewfiles.php 25 15
--------------------------------------------------------------------------------
A TOTAL OF 25 ERROR(S) AND 15 WARNING(S) WERE FOUND IN 1 FILE(S)
--------------------------------------------------------------------------------
загрузка...