Стандарты оформления кода

PSR-1 – Базовый стандарт оформления кода PSR-1

  1. В файлах НЕОБХОДИМО использовать только теги
  2. Файлы НЕОБХОДИМО представлять только в кодировке UTF-8 без BOM-байта.

Пример условного обьявления функции

  1. <?php
  2.  
  3. // условное объявление
  4. if (! function_exists('bar')) {
  5. function bar()
  6. {
  7. // тело функции
  8. }
  9. }

PSR-2 – Рекомендации по оформлению кода

Код ДОЛЖЕН быть оформлен согласно стандарту PSR-1.

Для оформления отступов ДОЛЖНЫ использоваться четыре пробела (но не знак табуляции).

НЕДОПУСТИМО жёстко ограничивать длину строки; мягкое ограничение ДОЛЖНО составлять 120 символов; СЛЕДУЕТ стараться, чтобы длина строки составляла 80 символов или менее.

После ключевых слов в управляющих конструкциях ДОЛЖЕН располагаться один пробел, а после вызовов функций и методов – НЕ ДОЛЖЕН.
Открывающая фигурная скобка в управляющих конструкциях ДОЛЖНА располагаться в той же строке, что и сама конструкция, а закрывающая фигурная скобка ДОЛЖНА располагаться на следующей строке после тела конструкции.
После открывающей круглой скобки и перед закрывающей круглой скобкой в управляющих конструкциях НЕ ДОЛЖНО быть пробела.

  1. if ($a === $b) {
  2. bar();
  3. } elseif ($a > $b) {
  4. $foo->bar($arg1);
  5. } else {
  6. BazClass::bar($arg2, $arg3);
  7. }


Файлы

  1. Во всех файлах с PHP-кодом ДОЛЖЕН быть использован Unix-вариант переноса строк (Unix linefeed, т.е. \n).
  2. В конце каждого файла с PHP-кодом ДОЛЖНА быть одна пустая строка.
  3. Закрывающий тег ?> ДОЛЖЕН отсутствовать в файлах, содержащих только PHP-код.

Строки

  1. НЕ ДОЛЖНО быть жёсткого ограничения длины строки.
  2. Мягкое ограничение длины строки ДОЛЖНО составлять 120 символов; автоматические системы проверки стиля ДОЛЖНЫ выдавать предупреждение при превышении этого ограничения, но НЕ ДОЛЖНЫ считать это ошибочной ситуацией.
  3. СЛЕДУЕТ стараться, чтобы длина строки составляла 80 символов или менее; более длинные строки СЛЕДУЕТ разбивать на несколько отдельных строк, длина каждой из которых не превышала бы 80 символов.
  4. В конце непустых строк НЕ ДОЛЖНО быть пробелов.
  5. Пустые строки МОГУТ быть добавлены в код для повышения удобочитаемости и разделения блоков кода.
  6. В одной строке НЕ ДОЛЖНО быть более одного выражения.

Отступы

  1. Для оформления отступов ДОЛЖНЫ использоваться четыре пробела (но не знак табуляции).
  2. Примечание: использование только лишь пробелов (без смешивания их с табуляциями) позволяет избежать проблем с обработкой истории изменения кода, определением самих изменений, патчами и комментариями. Использование пробелов также позволяет легко добавлять небольшие отступы для выравнивания отдельных вложенных строк.

Ключевые слова и константы true / false / null

  1. Ключевые слова PHP ДОЛЖНЫ быть написаны в нижнем регистре.
  2. Константы PHP true, false и null ДОЛЖНЫ быть написаны в нижнем регистре.

Аргументы методов

  1. В списке аргументов НЕ ДОЛЖНО быть пробела перед запятыми, но ДОЛЖЕН быть пробел после каждой запятой.
  2. Аргументы со значениями по умолчанию ДОЛЖНЫ располагаться в конце списка (после аргументов без значений по умолчанию). {Примечание переводчика: и тут дело не в красоте, нарушение этого правила может привести ко вполне явным ошибкам выполнения программы, когда аргументу без значения по умолчанию «не хватит» значения при вызове метода.}
  1. <?php
  2.  
  3. namespace Vendor\Package;
  4.  
  5. class ClassName
  6. {
  7. public function foo($arg1, &$arg2, $arg3 = [])
  8. {
  9. // тело метода
  10. }
  11. }?>
  1. Список аргументов МОЖЕТ быть разделён на несколько строк, каждая из которых дополнена слева одним отступом (четырьмя пробелами). В таком случае первый элемент списка аргументов ДОЛЖЕН начинаться с новой строки, и в каждой строке ДОЛЖЕН быть указан только один аргумент.
  2. В случае, если список аргументов разделён на несколько строк, закрывающая круглая скобка и открывающая фигурная скобка ДОЛЖНЫ располагаться вместе на своей отдельной строке, а между ними должен быть один пробел.
  1. <?php
  2.  
  3. namespace Vendor\Package;
  4.  
  5. class ClassName
  6. {
  7. public function aVeryLongMethodName(
  8. ClassTypeHint $arg1,
  9. &$arg2,
  10. array $arg3 = []
  11. ) {
  12. // тело метода
  13. }
  14. }?>

Вызовы методов и функций

В коде вызова функций и методов НЕ ДОЛЖНО быть пробела между именем функции или метода и открывающей круглой скобкой, НЕ ДОЛЖНО быть пробела после открывающей круглой скобки, НЕ ДОЛЖНО быть пробела перед закрывающей круглой скобкой. В списке аргументов НЕ ДОЛЖНО быть пробелов перед запятыми, но ДОЛЖЕН быть пробел после каждой запятой.

  1. <?php
  2. bar();
  3. $foo->bar($arg1);
  4. Foo::bar($arg2, $arg3);?>

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

  1. <?php
  2. $foo->bar(
  3. $longArgument,
  4. $longerArgument,
  5. $muchLongerArgument
  6. );

Управляющие конструкции

Russian
Категория: 
The code has been tested and works
Мультитег: 

Add new comment

Filtered HTML

  • Web page addresses and e-mail addresses turn into links automatically.
  • Allowed HTML tags: <a> <em> <strong> <cite> <blockquote> <code> <ul> <ol> <li> <dl> <dt> <dd>
  • Lines and paragraphs break automatically.

Plain text

  • No HTML tags allowed.
  • Web page addresses and e-mail addresses turn into links automatically.
  • Lines and paragraphs break automatically.
CAPTCHA
This question is for testing whether or not you are a human visitor and to prevent automated spam submissions.
Target Image