Все три стандарта из заголовка описывают правила написания кода. Придерживаясь их можно писать код в едином стиле, что упрощает его чтение и поддержку.
## PSR-1 Basic Coding Standard
**Active**
Закрепляет малое количество самых базовых правил:
- Использование UTF-8 без BOM
- Названия классов должны быть написаны в стиле `StudlyCaps`, также известный как `PascalCase`
- Названия методов должны быть написаны в стиле `camelCase`
- Константы класса должны быть записаны в `UPPER_CASE` с подчеркиваниями
Эти правила настолько базовые, что все они выходят за рамки PHP и встречаются в огромном количестве других языков программирования. Более подробно [здесь (EN)](https://www.php-fig.org/psr/psr-1/)
## PSR-2: Coding Style Guide
**Deprecated**
Закрепляет огромное количество правил написания кода. Многие из них касаются мелочей по типу расставления пробелов и переноса строк. Так что для соответствия кода стандарту стоит использовать инструменты статического анализа PHP Code Sniffer или PHPCS Fixer. Самые основные правила из стандарта:
- Код должен использовать 4 пробела для отступов, а не табуляцию.
- Открывающая фигурная скобка для классов должна быть на следующей строке после объявления класса.
- Открывающая фигурная скобка для методов должна быть на следующей строке после объявления метода.
- Закрывающая фигурная скобка должна быть на следующей строке после тела кода.
- Каждое выражение должно заканчиваться точкой с запятой.
- Строкам не следует быть длиной больше 80 символов
Именно в этом стандарте закреплена вот такая расстановка скобок функции:
```PHP
function sample()
{
...
}
```
Вместо более привычного многим варианта:
```PHP
function sample() {
...
}
```
На данный момент стандарт считается устаревшим и ему на смену пришел стандарт PSR-12 вместе с множеством новых синтаксических конструкций и широкими мониторами, на которых поместится строка длиннее чем 80 символов. Более подробно о PSR-2 [здесь (EN)](https://www.php-fig.org/psr/psr-2/)
## PSR-12: Extended Coding Style
Active
Расширенный стиль написания кода. Расширяется в данном случае стандарт PSR-2, который в чем-то успел устареть, а чего-то в нем не было изначально. Краткий список новшеств:
- Строкам не следует быть длиной больше 120 символов
- Обязательно использование только `< ?php` и `< ?=` тегов. Короткие теги `< ?` запрещены.
- Рекомендуется включение декларации строгих типов в начале файла: `declare(strict_types=1);`
- Обязательно явное указание модификаторов доступа (`public`, `protected`, `private`) для всех свойств и методов класса
- Рекомендуется использовать висячие запятые в многострочных массивах и списках аргументов функций для облегчения добавления новых элементов
В итоге правил стало еще больше, так что повторю рекомендацию по использования инструментов статического анализа. Они не только укажут на ошибки, но и во многих случаях исправят их автоматически