Всем доброго! У нас запускается третий партнёрский курс — Разработчик PHP, где мы вместе с Авито подготовили программу, а теперь думаем стоит ли отдельно делать спецкурс по фреймворкам. Первым на рассмотрении оказался Symfony.

Немного истории

Symfony представляет собой один из самых популярных фреймворков для веб-разработки в мире.

Он прошел длинный путь от полностью интегрированного full-stack фреймворка с бэк-офисом в Symfony 1.x к фреймворку, который стал развитием наработок Java-сообщества, и содержавшем в себе компоненты, вдохновленные JEE в версии Symfony2.

Изначально Symfony2 требовал PHP 5.2.7, но PHP 5.3, только вышедший на тот момент, обладал новой объектно-ориентированной моделью, поэтому SensioLabs незамедлительно сделали эту версию обязательной. Уже после в Symfony использовали Composer, завершили документацию и полностью перевели её на английский.

Практически сразу началась миграция крупных open-source проектов на Symfony: OroCRM, EzPublish, Drupal8, PHPBB, PrestaShop, Piwik и многие другие — часть полностью перешла на этот каркас, а некоторые использовали только отдельные программные компоненты. Стоит особо отметить Drupal8 — возможно, это не был самый первый проект, но точно одна из крупнейших CMS на рынке.

Возможность использовать лишь отдельные программные компоненты Symfony позволила обогатить экосистему специализированными программными решениями. Это сместило в тень фреймворк Standard Edition, (так называемое “полное издание” или “мета-пакет”), который уже не мог быть ответом на насущные вопросы бизнеса. Поэтому в 2017 году создатель Symfony объявил, что версия 3.4 для него станет последней.



Неполный список самых известных проектов, использующих Symfony:

  • Фреймворк Sylius eCommerce;
  • Сервис социальных закладок Delicious;
  • API Platform — специализированный фреймворк для дизайна RESTful API;
  • Laravel — доступный, RAD-ориентированный фреймворк;
  • Платформа Oro и связанная с ней экосистема: Oro CRM, Akeneo, OroCommerce и Marello;

Новое дыхание — Symfony Flex

Плагин Flex для Composer — это будущая замена Standard Edition. Он позволит сделать разработку Symfony приложений намного легче.

У разработчика появится возможность самому выбирать и добавлять нужные ему зависимости, используя файлы формата YAML. Они объяснят Flex что нужно сделать: добавить зависимость, конфигурировать и зарегистрировать бандл или, например, создать папку.

Найти “рецепты” для Flex можно в официально утвержденном каталоге SensioLabs. Кроме него также существует общественный источник, где каждый может добавить свой рецепт и сделать его доступным для всех.

Для того, чтобы выпустить RESTful API в 2017 году, используя Flex, нужно обратиться к API Platform. Он доступен через Flex, поэтому для получения полностью рабочего приложения достаточно выполнить всего одну команду.

Многие считают, что основной фокус проекта Symfony не на самом фреймворке, а на поддержании высококачественных программных систем и их подробной документации и я не могу с ними не согласится. Думаю, на этот вывод повлиял относительный успех Symfony 3 и популярность таких программных решений, как Akeneo. По-моему, команда Symfony движется в правильном направлении :)

Плагин для Composer совместим с Symfony 3.3 и совсем не зависит от выхода Symfony 4, поэтому уже сейчас можно начинать пробовать и эксперементировать.

Symfony в 2017

Если вы хотите быстро разобраться с API Platform, Akeneo, Marello, Sylius, Drupal8, Laravel или фреймворком Symfony Standard Edition, то изучение экосистемы Symfony может вам очень помочь. Стоит обратить внимание на следующие моменты:

  • Каким образом приложение Symfony читает HTTP запрос и возвращает ответ;
  • Каким образом приложение Symfony создает и делает доступными объекты (которые называются “сервисы”);
  • Каким образом приложение Symfony отправляет и следит за событиями в течение своего жизненного цикла;
  • Как создавать такие события;

Компоненты Symfony

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

Использование конкретных компонентов и их изучение безусловно зависит от проекта. Но эти библиотеки, на мой взгляд, являются самыми полезными:

  • Компонент Console: предоставляет полноценную консоль с аргументами и управлением параметрами, крайне необходимыми PHP в режиме CLI;
  • Компоненты Debug и VarDumper: предоставляют улучшенный контроль стека в случае ошибки и функцию дампа в качестве замены var_dump;
  • Компоненты Finder и Filesystem: предоставляют удобный API для поиска и манипуляций с папками и файлами;
  • Компоненты Polyfill-*: позволяют приложению использовать функции, недоступные из-за версии PHP или из-за отсутствия нужных расширений PHP;

Все эти компоненты используются в самых крупных PHP проектах и могут работать «автономно».

Вот такой краткий обзор, который, в целом, заставляет поглядывать именно в эту сторону, как первый спецкурс к отдельному курсу.

THE END

Как всегда интересны ваши мнения или тут в комментариях, или на нашем Дне открытых дверей.

Комментарии (8)


  1. OlegOleg1980
    14.12.2017 19:45
    +1

    Интересно. Подробно. Ценно.


    1. Fesor
      14.12.2017 20:24

      мое мнение — курсы бесполезны.


      p.s. промазал веткой.


      1. MaxRokatansky Автор
        15.12.2017 13:14

        Каждому своё. Кому-то наоборот курсы сильно помогают.


  1. VolCh
    14.12.2017 21:33

    Route, Doctrine, Form, Validator, Auth для начинающего разработчика важнее чем Finder и полифиллы :)


    1. Fesor
      15.12.2017 00:28

      видимо в курсы это не входит.


  1. PQR
    15.12.2017 10:45

    Статья вышла откровенно слабой.
    А вот программа курса «Разработчик PHP» порадовала — хорошее расширение кругозора даже для опытного разработчика.


    1. MaxRokatansky Автор
      15.12.2017 13:13

      Да уж, это заметили. Исправимся чем-нибудь хорошим и полезным в ближайшее время. :)

      А за доброе слово про курсы — спасибо. Как говорится: «Доброе слово — оно и кошке приятно» :)


  1. MadHarper
    18.12.2017 11:48

    Курс по symfony был бы как минимум любопытен