PSR-1. Основной стандарт написания кода.

Данная статья, это авторский перевод, описания стандарта. С оригиналом описания Вы можете ознакомиться здесь.

Этот раздел стандарта содержит элементы по стилю кодирования, которые считаются необходимыми для обеспечения высокого уровня технической совместимости между общими фрагментами PHP кода.

Встречающиеся ключевые слова «ДОЛЖЕН», «НЕ ДОЛЖЕН», «ТРЕБУЕТСЯ», «СЛЕДУЕТ», «НЕ СЛЕДУЕТ», «РЕКОМЕНДУЕТСЯ», «МОЖЕТ» и «ОПЦИОНАЛЬНО» в данном стандарте интерпретируются как описано в документе RFC 2119.

1. Общий обзор.

  • Файлы ДОЛЖНЫ использовать только теги вида [cci lang=»php»]

  • При использовании  PHP кода файлы ДОЛЖНЫ использовать только UTF-8 без BOM.
  • Файлам СЛЕДУЕТ либо объявлять логические части кода (классы, функции, константы и т.д.) либо вызывать побочные эффекты (например, генерировать выходные данные, изменять .ini настройки и т.д.) но НЕ СЛЕДУЕТ выполнять обе эти функции одновременно.
  • Пространства имен и классы ДОЛЖНЫ следовать стандартам автозагрузки PSR: [PSR-0, PSR-4].
  • Имена классов ДОЛЖНЫ быть объявлены в [cci lang=»php»] StudlyCaps [/cci] стиле.
  • Константы классов ДОЛЖНЫ быть объявлены с помощью всех заглавных букв, с использованием символа нижнего подчеркивания _ в качестве разделителя .
  • Имена методов классов ДОЛЖНЫ быть объявлены в [cci] camelCase [/cci] стиле.

2. Файлы.

2.1. PHP теги.

PHP код ДОЛЖЕН использовать только длинные теги [cci lang=»php»] [/cci] или только короткие теги для вывода [cci lang=»php»] [/cci] . Другие варианты тегов в PHP коде использоваться НЕ ДОЛЖНЫ.

2.2. Кодировка символов.

PHP код ДОЛЖЕН использовать только UTF-8 без BOM.

2.3. Побочные эффекты.

Содержимому файла СЛЕДУЕТ объявлять новые фрагменты кода (классы, функции, константы и т.д.) и не вызывать никаких побочных эффектов, или в других случаях файлам СЛЕДУЕТ выполнять логику с побочными эффектами, но НЕ СЛЕДУЕТ выполнять и то и другое одновременно.

Понятие «побочные эффекты» означает выполнение логики не связанной напрямую с объявлением классов, функций, констант и т.д., просто от включения файла.

«Побочные эффекты» включают (но не ограничиваются только ими): вывод данных, явное использование [cci] require [/cci] или [cci] include [/cci], подключение к внешним сервисам, модификацию .ini настроек, выбрасывание ошибок или исключений, модификацию глобальных или статических переменных, чтение из файла или запись в файл, и т.д.

Ниже представлен пример ситуации, которую следует избегать. В данном фрагменте файла вызываются побочные эффекты, а также имеется объявление функции.

[cce lang=»php»]
\n»;

// объявление функции
function foo()
{
// тело функции
}
[/cce]

Следующий пример файла, содержит только объявления функций без создания других «побочных эффектов», и такому примеру рекомендуется следовать:

[cce lang=»php»]
3. Пространства имен и имена классов.

Пространства имен и классы ДОЛЖНЫ следовать стандартам автозагрузки PSR: [PSR-0, PSR-4].

Это требование означает, что каждый класс расположен в своем отдельном файле, и находится в пространстве имен минимально хотя бы одного уровня — с верхним уровнем в качестве имени производителя (распространителя).

Имена классов ДОЛЖНЫ быть объявлены в [cci lang=»php»] StudlyCaps [/cci] стиле.

Код, написанный на PHP 5.3 и выше версий ДОЛЖЕН использовать формальное пространство имен.

Для примера:

[cce lang=»php»]
В коде, написанном на PHP 5.2.X и более ранних версиях СЛЕДУЕТ использовать соглашение псевдо-пространства имен, применяя для этого [cci] Vendor_ [/cci] префикс производителя в имени класса.

[cce lang=»php»]
4. Константы, свойства и методы классов.

Требования, указанные ниже к термину «класс», относятся ко всем классам, интерфейсам и трейтам.

4.1. Константы.

Константы классов ДОЛЖНЫ быть объявлены в верхнем регистре с использованием символа нижнего подчеркивания «_» в качестве разделителя. Для примера:

[cce lang=»php»]
4.2. Свойства.

В этом руководстве намеренно избегаются всякие рекомендации относительно различных стилей [cci]$StudlyCaps[/cci], [cci]$camelCase[/cci] или [cci]$under_score[/cci] именования свойств классов.

Любое выбранное наименование свойств класса СЛЕДУЕТ использовать без изменений в рамках разумной логической области. Такой областью могут быть границы метода, границы класса, граница пакета или область в рамках одного производителя программного обеспечения.

4.3. Методы.

Имена методов ДОЛЖНЫ быть объявлены в [cci] camelCase()
[/cci] стиле.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *