В разделе описывается правила кодирования, необходимые для обеспечения высокого уровня технической совместимости кода 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().