Стандарт PSR-1: Базовый стандарт разработки
Этот раздел стандарта включает в себя то, что следует считать стандартными элементами разработки кода, которые необходимы для обеспечения высокого уровня технической совместимости между общим кодом PHP.
Ключевые слова «ДОЛЖЕН», «НЕ ДОЛЖЕН», «ТРЕБУЕТСЯ» и т.д. в этом документе интерпретируются, как описано в RFC 2119.
1. Обзор
- Файл ДОЛЖЕН использовать только <?php и <?= тэги.
- Файлы ДОЛЖНЫ использовать кодировку UTF-8 без BOM.
- Файлы ДОЛЖНЫ либо объявлять символы (классы, функции, константы и т. д.), либо вызывать побочные эффекты (например, генерировать вывод, изменять настройки .ini и т. д.), но НЕ ДОЛЖНЫ делать и то, и другое.
- Пространства имен и классы ДОЛЖНЫ следовать PSR «автозагрузки»: [PSR-0, PSR-4].
- Имена классов ДОЛЖНЫ быть объявлены в StudlyCaps.
- Константы класса ДОЛЖНЫ быть объявлены в верхнем регистре с разделителями подчеркивания.
- Имена методов ДОЛЖНЫ быть объявлены в camelCase.
2. Файлы
2.1. PHP Тэги
Код PHP ДОЛЖЕН использовать длинные теги <?php ?> или короткие теги <?= ?>, но НЕ ДОЛЖЕН использовать другие варианты тегов.
2.2. Кодировка символов
Код PHP ДОЛЖЕН использовать только UTF-8 без BOM.
2.3. Побочные эффекты
Файл ДОЛЖЕН объявлять новые символы (классы, функции, константы и т. д.) и не вызывать других побочных эффектов, или он ДОЛЖЕН выполнять логику с побочными эффектами, но НЕ ДОЛЖЕН делать и то, и другое.
Фраза «побочные эффекты» означает выполнение логики, не связанной напрямую с объявлением классов, функций, констант и т. д., просто из включения файла.
«Побочные эффекты» включают, но не ограничиваются: генерирование вывода, явное использование require или include, подключение к внешним службам, изменение параметров ini, создание ошибок или исключений, изменение глобальных или статических переменных, чтение или запись в файл, а также скоро.
Ниже приведен пример файла с объявлениями и побочными эффектами. т. е. пример того, чего следует избегать:
<?php
// побочный эффект: изменение конфигурации ini
ini_set('error_reporting', E_ALL);
// побочный эффект: загрузка файла
include "file.php";
// побочный эффект: генерация вывода
echo "<html>\n";
// декларация функции
function foo()
{
// тело функции
}
В следующем примере показан файл, содержащий объявления без побочных эффектов; т. е. пример того, чему подражать:
<?php
// декларация функции
function foo()
{
// тело функции
}
// условное объявление *не* побочный эффект
if (! function_exists('bar')) {
function bar()
{
// тело функции
}
}
3. Пространство имен и имена классов
Пространства имен и классы ДОЛЖНЫ следовать PSR «автозагрузки»: [PSR-0, PSR-4].
Это означает, что каждый класс находится в отдельном файле и находится в пространстве имен по крайней мере одного уровня: имя поставщика верхнего уровня.
Имена классов ДОЛЖНЫ быть объявлены в StudlyCaps.
Код, написанный для PHP 5.3 и выше, ДОЛЖЕН использовать формальные пространства имен.
Например:
<?php
// PHP 5.3 и более поздние:
namespace Vendor\Model;
class Foo
{
}
В коде, написанном для 5.2.x и более ранних версий, СЛЕДУЕТ использовать соглашение о псевдопространстве имен с префиксами Vendor_ в именах классов.
<?php
// PHP 5.2.x и более ранние:
class Vendor_Model_Foo
{
}
4. Константы, свойства и методы класса
Термин «класс» относится ко всем классам, интерфейсам и трейтам.
4.1. Константы
Константы класса ДОЛЖНЫ быть объявлены в верхнем регистре с разделителями подчеркивания. Например:
<?php
namespace Vendor\Model;
class Foo
{
const VERSION = '1.0';
const DATE_APPROVED = '2012-06-01';
}
4.2. Свойства
В этом руководстве намеренно избегаются любые рекомендации по использованию имен свойств $StudlyCaps, $camelCase или $under_score.
Какое бы соглашение об именах ни использовалось, СЛЕДУЕТ применять последовательно в разумных пределах. Эта область может быть на уровне поставщика, на уровне пакета, на уровне класса или на уровне метода.
4.3. Методы
Имена методов ДОЛЖНЫ быть объявлены в camelCase().