В разделе описывается правила кодирования, необходимые для обеспечения высокого уровня технической совместимости кода PHP.
К дополнении этого стандарта следует применять PSR-2.
Файлы должны использовать только <?php
и <?=
тег.
Файлы ДОЛЖНЫ использовать только UTF-8 без спецификации для кода PHP.
Пространства имен и классы ДОЛЖНЫ следовать «автозагрузке» PSR: [ PSR-0 , PSR-4 ].
Имена классов ДОЛЖНЫ быть объявлены в StudlyCaps
.
Константы классов ДОЛЖНЫ быть объявлены в верхнем регистре с разделителями подчеркивания.
Имена методов ДОЛЖНЫ быть объявлены в camelCase
.
Код PHP ДОЛЖЕН использовать длинные <?php ?>
теги или <?= ?>
; он НЕ ДОЛЖЕН использовать другие варианты тегов.
Код PHP ДОЛЖЕН использовать только UTF-8 без BOM.
В файле/функции/классе не должно находиться логики, не связанной напрямую с текущим элементом.
Фраза «побочные эффекты» означает выполнение логики, не связанной напрямую с объявлением классов, функций, констант и т. Д., Просто путем включения файла .
«Побочные эффекты» включают, помимо прочего: генерацию вывода, явное использование require
или include
, подключение к внешним службам, изменение настроек ini, выдачу ошибок или исключений, изменение глобальных или статических переменных, чтение или запись в файл и т. Д. .
Ниже приведен пример файла с объявлениями и побочными эффектами; т.е. пример того, чего следует избегать:
<?php // side effect: change ini settings ini_set('error_reporting', E_ALL); // side effect: loads a file include "file.php"; // side effect: generates output echo "<html>\n"; // declaration function foo() { // function body }
В следующем примере показан файл, содержащий объявления без побочных эффектов; т.е. пример того, что подражать:
<?php // declaration function foo() { // function body } // conditional declaration is *not* a side effect if (! function_exists('bar')) { function bar() { // function body } }
Пространства имен и классы ДОЛЖНЫ следовать «автозагрузке» PSR: [ PSR-0 , PSR-4 ].
Это означает, что каждый класс находится в файле сам по себе и находится в пространстве имен по крайней мере одного уровня: имя поставщика верхнего уровня.
Имена классов ДОЛЖНЫ быть объявлены в StudlyCaps
.
Код, написанный для PHP 5.3 и более поздних версий, ДОЛЖЕН использовать формальные пространства имен.
Например:
<?php // PHP 5.3 and later: namespace Vendor\Model; class Foo { }
В коде, написанном для 5.2.x и ранее, СЛЕДУЕТ использовать соглашение Vendor_
о псевдонимах префиксов в именах классов.
<?php // PHP 5.2.x and earlier: class Vendor_Model_Foo { }
Термин «класс» относится ко всем классам, интерфейсам и характеристикам.
Константы классов ДОЛЖНЫ быть объявлены в верхнем регистре с разделителями подчеркивания. Например:
<?php namespace Vendor\Model; class Foo { const VERSION = '1.0'; const DATE_APPROVED = '2012-06-01'; }
Это руководство намеренно избегает каких - либо рекомендаций относительно использования $StudlyCaps
, $camelCase
или $under_score
имен свойств.
Какое бы соглашение об именах ни использовалось, СЛЕДУЕТ применять последовательно в разумных пределах. Эта область может быть на уровне поставщика, на уровне пакета, на уровне класса или на уровне метода.
Имена методов ДОЛЖНЫ быть объявлены в camelCase()
.