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

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

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

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

// условное объявление
if (! function_exists('bar')) {
function bar()
{
// тело функции
}
}

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

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

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

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

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

if ($a === $b) {
bar();
} elseif ($a > $b) {
$foo->bar($arg1);
} else {
BazClass::bar($arg2, $arg3);
}


Файлы

  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. Аргументы со значениями по умолчанию ДОЛЖНЫ располагаться в конце списка (после аргументов без значений по умолчанию). {Примечание переводчика: и тут дело не в красоте, нарушение этого правила может привести ко вполне явным ошибкам выполнения программы, когда аргументу без значения по умолчанию «не хватит» значения при вызове метода.}

namespace Vendor\Package;

class ClassName
{
public function foo($arg1, &$arg2, $arg3 = [])
{
// тело метода
}
}?>

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

namespace Vendor\Package;

class ClassName
{
public function aVeryLongMethodName(
ClassTypeHint $arg1,
&$arg2,
array $arg3 = []
) {
// тело метода
}
}?>

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

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

bar();
$foo->bar($arg1);
Foo::bar($arg2, $arg3);?>

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

$foo->bar(
$longArgument,
$longerArgument,
$muchLongerArgument
);

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

Категория: 
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.