PER Coding Style - стандарт форматування PHP-коду від PHP-FIG, наступник PSR-12 (а той - PSR-2). Описує відступи (4 пробіли), розташування дужок, пробіли навколо операторів, порядок use, оформлення сигнатур, нові конструкції мови (enum, match, атрибути, property hooks).
Навіщо єдиний стиль: код-рев'ю обговорює суть, а не пробіли; diff-и не засмічуються переформатуванням; новий розробник читає код без звикання до особистих звичок кожного автора.
Інструменти, що форматують автоматично:
- Laravel Pint - обгортка над PHP-CS-Fixer з пресетом Laravel (є й пресет
per). У Laravel-проєктах - стандарт.
vendor/bin/pint # виправити
vendor/bin/pint --test # лише перевірити (для CI)
vendor/bin/pint --dirty # лише змінені файли
- PHP-CS-Fixer - гнучке налаштування правил.
- PHP_CodeSniffer (
phpcs/phpcbf) - перевірка й виправлення за стандартами.
Як впровадити, щоб працювало:
- Один конфіг у репозиторії (
pint.json) - а не налаштування в IDE кожного розробника. - Перевірка в CI - злиття неможливе, якщо стиль порушено.
- Автоформатування при збереженні в IDE чи pre-commit хук - щоб CI рідко падав.
- Одноразове переформатування всього коду окремим комітом, а його хеш - у
.git-blame-ignore-revs, щобgit blameне показував цей коміт як автора кожного рядка.
Форматування ≠ якість коду: стиль ловить пробіли й дужки, а помилки логіки й типів - статичний аналіз (PHPStan/Larastan) і тести.