Встречается на 33% собеседований по PHP

Что такое в мире PHP PSR и RFC

PSR (PHP Standard Recommendations) и RFC (Request for Comments) — это два разных механизма стандартизации в экосистеме PHP: PSR — рекомендации по совместимости компонентов, создаваемые PHP-FIG, а RFC — предложения по изменению самого языка PHP, которые обсуждаются и голосуются сообществом разработчиков ядра. Они играют ключевую роль в развитии PHP, но решают разные задачи: PSR унифицирует практики написания кода и интерфейсы библиотек, а RFC определяет эволюцию синтаксиса и функциональности языка.

PSR: стандарты для экосистемы

PSR — это серия стандартов, разработанных организацией PHP-FIG (PHP Framework Interop Group), в которую входят представители крупных PHP-проектов, таких как Symfony, Laravel, Zend Framework и других. Основная цель PHP-FIG — улучшить совместимость между различными библиотеками и фреймворками, чтобы разработчики могли легко комбинировать компоненты из разных источников.

Каждый стандарт PSR охватывает конкретную область разработки. Наиболее известные из них:

  • PSR-1 — базовые правила оформления кода, например, использование открывающих тегов <?php и <?= и кодировка UTF-8.
  • PSR-12 — расширенный стиль кодирования, который является эволюцией PSR-2 и задаёт единые правила отступов, пробелов, именования и структуры файлов.
  • PSR-3 — интерфейс логирования, определяющий методы log(), info(), error() и другие, что позволяет подключать любые совместимые логгеры.
  • PSR-4 — стандарт автозагрузки классов, который описывает, как сопоставлять пространства имён с путями файлов. Этот стандарт используется большинством современных фреймворков и Composer.

Соблюдение PSR делает код более предсказуемым и облегчает интеграцию сторонних библиотек. Например, если библиотека следует PSR-4, её можно подключить через Composer без дополнительной настройки автозагрузки.

RFC: процесс изменения языка

RFC — это формальное предложение по изменению языка PHP. Такие предложения подаются разработчиками и обсуждаются сообществом через список рассылки PHP Internals. Каждый RFC содержит описание проблемы, предлагаемое решение, примеры кода и возможные последствия.

После обсуждения проводится голосование среди активных участников разработки ядра PHP. Чтобы RFC был принят, он должен набрать определённое количество голосов (обычно 2/3 от проголосовавших). Если предложение одобрено, оно включается в одну из будущих версий PHP.

Примеры известных RFC:

  • Анонимные классы (PHP 7) — позволили создавать классы без явного имени.
  • Скалярные типы (PHP 7) — добавили возможность указывать типы для параметров и возвращаемых значений.
  • Атрибуты (PHP 8) — заменили аннотации в doc-блоках на формальный синтаксис.
  • Конструктор с продвижением свойств (PHP 8) — сократил объявление свойств в конструкторе.

Процесс RFC делает развитие PHP прозрачным и демократичным: любой разработчик может внести предложение, и оно будет рассмотрено сообществом.

Различия и взаимодействие

Основное различие между PSR и RFC в том, что PSR — это рекомендации для разработчиков библиотек и приложений, а RFC — это изменения самого языка. PSR не является обязательным, но его соблюдение приветствуется в сообществе. RFC же, после принятия, становится частью языка и обязателен для всех.

PSR и RFC дополняют друг друга: RFC добавляет новые возможности языка, а PSR стандартизирует их использование. Например, после появления анонимных классов в PHP 7, PSR-12 включил рекомендации по их форматированию.

Коротко

  • PSR — стандарты PHP-FIG для совместимости компонентов: стиль кода, автозагрузка, интерфейсы.
  • RFC — предложения по изменению языка PHP, проходят обсуждение и голосование.
  • PSR не обязателен, но улучшает интеграцию; RFC обязателен после принятия.
  • Оба механизма способствуют развитию PHP: PSR — экосистемы, RFC — самого языка.
как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы