Что мы знаем о Symfony: мифы и легенды

0
954

Когда веб-разработчика спрашивают о Symfony, у него в голове, как правило, рисуется определенная картина, некое устоявшееся мнение. Что можно сказать о Symfony в одном предложении? Это full-stack веб-фреймворк, написанный на PHP. Всё так, но это не совсем точное определение. Понятие Symfony несколько шире стандартного понимания.

 symfony — это набор автономных компонентов. В свою очередь компоненты, связываясь между собой, образуют веб-платформу, своеобразную экосистему. При этом то, какие компоненты выбирать, зависит от вас и ваших задач. Вы также можете воспользоваться минимальным набором для создания простого приложения или прототипа или же развернуть тот самый полнофункциональный фреймворк Symfony.

Ребята из Noveo пообщались со своими PHP-разработчиками и выделили общие ключевые моменты, которые были отмечены, и задались вопросом, действительно ли всё так хорошо / плохо, как говорят. Так получилась эта подборка мифов и легенд о Symfony.

Низкая связность компонентов

Модульность — одна из наиболее важных особенностей работы с Symfony. Как уже было отмечено выше, Symfony являет собой набор переиспользуемых и автономных компонентов — бандлов. В Symfony всё есть бандл, и всё живёт в бандлах — и компоненты ядра фреймворка, и код вашего приложения. Такое архитектурное решение предоставляет возможность строить приложение очень гибко. Шаг за шагом вы строите свою структуру — по кирпичику, таким образом ваше приложение уже не монолитная стена, и, чтобы заменить какой-то модуль, вам не нужно рушить всё приложение. Причём конечную конфигурацию, разумеется, можно настроить «под себя». Более того, вы можете использовать отдельные компоненты Symfony вне фреймворка. Данным подходом успешно пользуются и другие проекты, например, Laravel, Drupal, Magento и многие другие.

Отдельно следует отметить поддержку Dependency Injection в Symfony как одну из главных фич фреймворка. Использование DI снижает связность и упрощает тестируемость кода.

В Symfony много готовых решений

Это действительно так — решения есть для самых разнообразных задач, от повседневных до экзотических. На сегодняшний день существует более 2500 бандлов, каждый из которых вы можете подключить и использовать — спасибо модульности. Если по каким-то причинам один из бандлов не подходит, его можно заменить на аналогичный, благо выбрать есть из чего. Или же, одновременно исправив фатальный недостаток и исполнив заветную мечту программиста, написать свой — такой же, но другой. Пожалуй, здорово иметь возможность переиспользования готовых компонентов и сторонних библиотек и в то же время не быть прибитым гвоздями к конкретной технологии или инструменту.

Symfony сложный

Symfony слишком сложный. Отчасти это так — у Symfony более высокий порог вхождения по сравнению с другими PHP-фреймворками. Соответственно, и времени на его освоение требуется гораздо больше. Новичкам придется непросто. Здесь и использование инновационных возможностей языка, и применение паттернов проектирования. Нужно быть готовым к тому, что изучением только Symfony дело не ограничится. В придачу следует ознакомиться с технологиями и инструментами, которые идут рука об руку с Symfony и позволят использовать его максимально продуктивно: Twig, SwiftMailer, Monolog, phpUnit, Doctrine, а также наиболее популярные бандлы, например, FOS, Knp, Gedmo и др.

Symfony спроектирован очень грамотно

Symfony отличается выстроенной концепцией и идеологией, но важно понимать, что он не даёт готового и единственно правильного решения при разработке проекта. Задача построения конечной архитектуры приложения (не забываем уважать стандарты) целиком и полностью делегируется разработчику и остается на его совести. Отсюда можно выделить два следствия, которые перекликаются с предыдущим пунктом: опытный Symfony-разработчик с большей степенью вероятности обладает глубокими знаниями языка в частности и навыками проектирования в целом. Второй, не столь жизнерадостный момент: найти грамотных Symfony-разработчиков сложнее, а воспитание собственных требует времени.

Symfony делает вас свободными

Считаете, что подключили бандлы и можно работать? Секундочку, не всё так просто. Поскольку фреймворк гибкий, то и возможностей для его настройки много. Конфиги и аннотации — наше всё. В стандартной поставке фреймворка базовые конфигурационные файлы уже присутствуют. Однако разработчики Symfony не ограничиваются yaml-файлами. Для конфигурирования приложения или отдельных его частей предоставлена возможность использовать аннотации, конфиги в виде xml- или php-файлов. Единого стиля нет, и каждый использует тот способ, который представляется наиболее удобным. Конечно, по многим моментам есть рекомендации, что использовать в той или иной ситуации, но это не накладывает на разработчиков дополнительных ограничений, они вправе самостоятельно делать выбор.