PSR-1
PSR-1 — базовый стандарт кодирования
Суть в одном предложении
PSR-1 задаёт базовые правила написания PHP-кода для совместимости между проектами и библиотеками.
Краткое определение
PSR-1 (Basic Coding Standard) — стандарт PHP-FIG, который определяет основные требования к коду: имена файлов и классов, неймспейсы, стиль объявления классов и методов, кодировка файлов.
Оригинал и перевод
- Язык: английский
- Оригинал: PSR-1: Basic Coding Standard
- Буквальный перевод: базовый стандарт кодирования
Синонимы и варианты написания
- PSR-1
- PSR1
- Basic Coding Standard
Происхождение
Принят PHP-FIG (PHP Framework Interop Group). PSR-12 (расширенный стиль кода) явно требует соответствия PSR-1; многие инструменты (PHP_CodeSniffer, PHP-CS-Fixer) проверяют оба.
Где используется
- Любой современный PHP-проект и открытые библиотеки
- Инструменты линтинга и форматирования (PHP_CodeSniffer, PHP-CS-Fixer)
- Code review и CI (проверка на соответствие PSR-1)
Когда это важно
При подключении чужого кода или публикации своей: единые правила имён и структуры упрощают интеграцию. Несоблюдение PSR-1 часто ломает автозагрузку по PSR-4.
Подробное объяснение
PSR-1 фиксирует: файлы только в UTF-8 без BOM; классы — в одном файле, имя файла совпадает с именем класса; неймспейсы и имена классов по стандарту PSR-4; константы класса — в UPPER_SNAKE_CASE; объявления namespace и use в начале файла, без кода до них. Это не стиль отступов или длины строки (это PSR-12), а минимум для совместимости.
Аналоги и связанные термины
- PSR-12 — расширенный стиль кода, включает требования PSR-1
- PSR-4 — автозагрузка; имена классов и файлов по PSR-1 согласуются с PSR-4
- PHP_CodeSniffer, PHP-CS-Fixer — инструменты проверки
Пример использования
«Проект настроен на проверку PSR-1 и PSR-12 в CI — коммиты с нарушениями не проходят.»
Мини‑FAQ
- PSR-1 и PSR-12 — в чём разница?
Ответ: PSR-1 — базовый минимум (имена, структура файла, кодировка). PSR-12 добавляет отступы, переносы строк, длину строки, оформление фигурных скобок и т.п.
Смотри также
- PSR-4
- PSR-12
- Namespace