EN
Оставить заявку

Что такое PHP-FIG?

Что такое PHP-FIG?

Если вы занимались разработкой PHP последние несколько лет, то наверняка знаете о проблемах этого языка. Зачастую можно услышать, что это фрагментированный язык, инструмент для  взломов, что он не имеет настоящей спецификации и т.д. Реальность же такова, что PHP сильно «вырос» в последнее время. Версия PHP 5.4 приблизила его к полной объектной модели и предоставила много новой функциональности.

И это все, конечно, хорошо, но что насчёт фрейморков? На PHP их существует огромное множество. Стоит только начать искать и вы поймете, что вам не хватит жизни изучить их все, потому что новые фрейморки появляются постоянно и в каждом изобретается что-то свое. Так как же превратить это в нечто, что не отталкивает разработчиков и позволяет легко переносить функционал из одного фреймворка в другой?

Что такое PHP-FIG

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

Только представьте: сейчас вы поддерживаете проект на Zend Framework, которому понадобился модуль корзины магазина. Вы уже писали такой модуль для предыдущего проекта, который был на Symphony. Не делать же его снова? К счастью и ZendF и Symphony являются частью PHP-FIG, так что можно импортировать модуль с одного фреймворка в другой. Разве не здорово?

Давайте узнаем, какие фреймворки входят в PHP-FIG

Участники PHP-FIG

Любой разработчик может внести свой фреймворк в список участников PHP-FIG. Тем не менее за это необходимо будет заплатить некую сумму, так что если у вас нет поддержки сообщества вы врядли согласитесь на это. Это сделано для того, чтобы предотвратить регистрацию миллионов микрофреймворков без какой-либо репутации.

Текущие участники:

Участники PHP FIG

Что такое PSR?

PSR (PHP Standarts Recomendations) — стандартные рекомендации, результат работы PHP-FIG. Одни члены Группы предлагают правила для каждого PSR, другие голосуют в поддержку этих правил или за их отмену. Обсуждение проходит в Google Groups, а наборы PSR доступны на официальном сайте PHP-FIG.

Давайте рассмотрим некоторые PSR:

PSR-0 — Autoloading Standart

Первый шаг на пути объединения фреймворков — наличие общей структуры директорий, поэтому и был принят общий стандарт автозагрузки.

Правила:

  1. Пространство имен (namespace) и класс должны иметь структуру \\(\)*.
  2. Каждое пространство имен должно содержать пространство верхнего уровня («Vendor Name»).
  3. Каждое пространство имен может иметь сколько угодно уровней.
  4. Каждый разделитель пространства имен конвертируется в DIRECTORY_SEPARATOR при загрузке.
  5. Каждый символ «_» в CLASS NAME конвертируется в DIRECTORY_SEPARATOR.
  6. К полностью определённому пространству имен и классу добавляется «.php» при загрузке.

Пример функции автозагрузки:

php-fig-code

PSR-1 — Basic Coding Standart

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

Правила:

  1. В файлах должны использоваться только теги <?php и <?.
  2. В файлах должна использоваться только кодировка UTF-8 without BOM.
  3. Имена пространств и классы должны следовать PSR-0.
  4. Имена классов должны быть объявлены в нотации StudlyCaps.
  5. Константы класса должны быть объявлены в верхнем регистре, разделенные подчеркиваниями.
  6. Методы должны быть объявлены в нотации camelCase.

PSR-2 — Coding Style Guide

Это расширенные инструкции для PSR-1, описывающие правила форматирования кода.

Правила:

  1. Код должен соответствовать PSR-1.
  2. Вместо табуляции должны использоваться 4 пробела.
  3. Не должно быть строгого ограничения на длину строки, рекомендуемая длина — до 80 символов.
  4. Должна быть одна пустая строка после объявления пространства имен.
  5. Скобки для классов должны открываться на следующей строке после объявления и закрываться после тела класса (то же самое для методов).
  6. Видимость методов и свойств должна быть обязательно определена (public, private).
  7. Открывающие скобки для управляющих структур  должны находиться на той же строке, закрывающие скобки должны быть на следующей строке после тела структуры.
  8. Пробелы не ставятся после открывающихся круглых скобок методов управляющих структур и перед закрывающимися скобками.

PCR-3 — Logger Interface

В PCR-3 регулируется логгинг, в частности основные девять методов.

Методы:

  1. LoggerInterface предоставляет 8 методов для логирования восьми RFC 5424 уровней (debug, notice, warning, error, critical, alert, emergency).
  2. Девятый метод log() принимает на вход уровень предупреждения первым параметром. Вызов метода с параметром уровня предупреждения должен возвращать такой же результат, как и вызов метода определенного уровня лога ( log(ALERT) == alert() ). Вызов метода с неопределённым уровнем предупреждения должен генерировать Psr\Log\InvalidArgumentException.

PCR-4 — Improved Autoloading

Так же как и PSR-0, PSR-4 предоставляет улучшенные методы автозагрузки

Правила:

  1. Термин «класс» относится к классам, интерфейсам, трейтам и другим похожим структурам
  2. Полностью определённое имя класса имеет следующую форму: \<NamespaceName>(\<SubNamespaceNames>)*\<ClassName>
  3. При загрузке файла, соответствующему полностью определённому имени класса:
  • Непрерывная серия одного или более ведущих пространств имен, не считая ведущего разделителя пространства имен, в полностью определенном имени класса соответствует по крайней мере одной «корневой директории».
  • Имена директорий и поддиректорий должны соответствовать регистру пространства имен.
  • Окончание полного имени класса соответствует имени файла с окончанием .php. Регистр имени файла обязан соответствовать регистру окончания полного имени класса.
  • Реализация автозагрузчика не должна бросать исключения, генерировать ошибки любого уровня и не обязана возвращать значение.

Заключение

PHP-FIG изменяет способы написания фреймворков, но не то как они работают. Клиенты часто обязывают работать с существующим кодом внутри фреймворка или определяют с каким фреймворком вы должны работать над проектом. PSR рекомендации делают жизнь разработчиков на много легче в этом отношении и это здорово!

Что такое PHP-FIG? 4.04/5 253
Контакты
Украина
0 800 330 690
бесплатно по Украине с любого номера
Киев, ул. Вадима Гетьмана, 1Б
Харьков, ул. Отакара Яроша, 18
Нью-Йорк
Москва
 
ОБСУДИТЬ ПРОЕКТ
Крутые проекты начинаются с заполнения этой формы
Success
Заявка успешно отправлена
Спасибо, что обратились в Art Lemon.
Обращения обрабатываются с 10:00 до 18:00 по будням. Заявки, полученные в выходные, обрабатываются в первой половине следующего рабочего дня.
Переверните устройство