Мифы и легенды о Symfony | OTUS
⚡ Подписка на курсы OTUS!
Интенсивная прокачка навыков для IT-специалистов!
Подробнее

Курсы

Программирование
Python Developer. Professional
-3%
Разработчик на Spring Framework
-5%
iOS Developer. Professional
-8%
Golang Developer. Professional
-6%
Базы данных
-12%
Agile Project Manager
-5%
Android Developer. Professional
-11%
Microservice Architecture
-5%
C++ Developer. Professional
-5%
Highload Architect
-6%
JavaScript Developer. Basic
-8%
Backend-разработчик на PHP
-9%
Архитектура и шаблоны проектирования C# Developer. Professional
-9%
Team Lead
-6%
Kotlin Backend Developer
-9%
Разработчик программных роботов (RPA) на базе UiPath и PIX Unity Game Developer. Basic Разработчик голосовых ассистентов и чат-ботов Node.js Developer Интенсив «Оптимизация в Java» Супер - интенсив по паттернам проектирования Супер - интенсив по Kubernetes iOS Developer. Basic Супер-интенсив «СУБД в высоконагруженных системах» Супер-интенсив "Tarantool"
Инфраструктура
DevOps практики и инструменты
-12%
Базы данных
-12%
Network engineer. Basic
-10%
Network engineer
-4%
Инфраструктурная платформа на основе Kubernetes
-6%
Экспресс-курс по управлению миграциями (DBVC)
-10%
Мониторинг и логирование: Zabbix, Prometheus, ELK
-10%
Administrator Linux. Professional
-6%
Разработчик IoT
-13%
Основы Windows Server Cloud Solution Architecture Разработчик голосовых ассистентов и чат-ботов VOIP инженер Супер-практикум по работе с протоколом BGP NoSQL Супер-практикум по использованию и настройке GIT Супер-интенсив «СУБД в высоконагруженных системах» Экспресс-курс «IaC Ansible»
Специализации Курсы в разработке Подготовительные курсы
+7 499 938-92-02

Мифы и легенды о Symfony

Symfony — Full Stack web-фреймворк, который написан на PHP. Однако на самом деле, понятие Symfony намного шире. В этой статье мы собрали популярные и устоявшиеся мнения об этом фреймворке.

Итак, Symfony представляет собой набор автономных компонентов. Эти компоненты, связываясь друг с другом, образуют web-платформу, можно сказать, своеобразную экосистему. Какие компоненты выбирать — зависит от поставленных задач. Собственно говоря, для создания простого приложения можно воспользоваться и минимальным набором.

Теперь перейдём к разбору мифов, легенд и особенностей Symfony.

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

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

Очередная классная фича — поддержка Dependency Injection, использование которой понижает связность, упрощая тестируемость кода.

Много готовых решений

Существуют готовые решения для самых разных задач, включая экзотические. Это тысячи бандлов, каждый из которых можно подключить и использовать. При этом выбрать есть из чего. Также никто не мешает написать свой бандл.

Мощное сообщество

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

Отличная документация

Высокий уровень технической документации стоит отметить отдельно. При этом документация описывает не только компоненты, но и популярные бандлы. А ещё документация хорошо структурирована, написана простым и понятным языком, включает в себя примеры кода, поэтому разобраться в ней довольно легко.

Кроме того, следует сказать, что Symfony не ограничивает разработчика в выборе и предоставляет свободу действий, однако в то же самое время требует детального понимания принципов работы фреймворка, ведь на программиста возлагается ответственность за построение структуры приложения.

Вся суть аннотаций фреймворка одном контроллере:

/**
 * @Route("/{id}/", requirements={"id":"\d+"})
 * @Method("GET")
 * @Rest\View(statusCode=200, serializerEnableMaxDepthChecks=true, serializerGroups={"details"})
 * @ParamConverter("user", class="AppBundle:User")
 * @ApiDoc(
 *   description="Fetch info of a user",
 *   requirements={
 *      {
 *          "name"="id",
 *          "dataType"="integer",
 *          "requirement"="\d+",
 *          "description"="User id"
 *      }
 *   },
 *   resource=true,
 *   section="User"
 * )
 */
public function getUserAction(User $user)
{
    return $user;
}

symfony_1-20219-0a8649.png

Symfony хорош только для крупных проектов?

Если мы говорим о Full Stack-разработке, то можно с уверенностью сказать, что Symfony прекрасно подходит для крупных проектов. Однако это не значит, что его не стоит использовать для проектов небольших. Но тут надо понимать, что это напоминает поездку на фуре-автопоезде в магазин за продуктами — по сравнению с легковым авто, поездка выйдет медленнее и дороже.

Тем не менее есть исключения: 1. Вам надо решить несколько типовых задач. Используя Symfony, вы получите выигрыш за счёт быстрого старта и применения стандартных бандлов. 2. Вы используете фреймворк «на вырост», то есть думая о масштабируемости проекта и его предстоящем расширении.

Symfony чрезмерно сложен?

У Symfony действительно более высокий порог вхождения, если сравнивать с другими PHP-фреймворками. Следовательно, времени на освоение потребуется больше, а новичкам придётся нелегко. Нужно будет использовать как инновационные возможности языка, так и паттерны проектирования. Кроме того, изучением одного лишь Symfony дело точно не ограничится — вам придётся ознакомиться с сопутствующими технологиями: Monolog, Twig, SwiftMailer, phpUnit, Doctrine и др.

Symfony является медленным?

Это не совсем так, хотя фреймворк не является лидером в плане производительности, и существуют более быстрые решения. Просто за всё надо платить, а плюшки, получаемые нами от работы с Symfony, требуют соответствующих ресурсов, да и абстракция не является бесплатной. Но, несмотря на это, быстродействие Symfony находится на достойном уровне.

Магии слишком много?

Иногда говорят, что в Symfony очень много магии, поэтому не всегда понятно, что, откуда, куда и как. На самом деле, магии в Symfony не больше, чем в других фреймворках. И это нормально, ведь в этом и заключается основная задача фреймворков — упрощать решение повторяющихся задач. Естественно, поначалу не всё очевидно, поэтому, используя готовые рецепты и получая результат, мы говорим про магию. Однако придёт момент, когда вы почувствуете недостаток стандартных возможностей фреймворка, поэтому станете создавать «свою магию». И в этот самый момент функциональность фреймворка станет понятной и перестанет в вашем понимании быть магией.

По материалам статьи «Что мы знаем о Symfony: мифы и легенды».

Не пропустите новые полезные статьи!

Спасибо за подписку!

Мы отправили вам письмо для подтверждения вашего email.
С уважением, OTUS!

Автор
0 комментариев
Для комментирования необходимо авторизоваться