Symfony: изменяемый PHP-фреймворк с сильным сообществом

В октябре 2005 года французская компания SensioLabs опубликовала фреймворк с открытым исходным кодом Symfony, который на самом деле был разработан под названием Sensio Framework. Необычное написание нового названия стало результатом сохранения старого префикса класса и префикса темы ‘sf’. Причиной создания фреймворка стал Ruby on Rails, который был выпущен годом ранее, и желание команды разработчиков иметь сопоставимую платформу для разработки PHP-проектов. С тех пор SensioLabs постоянно развивает Symfony Framework. Например, в 2011 году в Symfony 2 была добавлена модульная конструкция.

Что такое Symfony?

Symfony — это набор из примерно 30 PHP-библиотек, которые можно скачать и использовать как в комплексе, так и по отдельности. Помимо этих стандартных компонентов, существуют дополнительные модули, которые могут быть использованы для расширения фреймворка или использоваться отдельно. По данным SensioLabs, за последние десять лет было зарегистрировано более 500 миллионов загрузок отдельных пакетов и целых фреймворков, что отражается на общем распространении: многочисленные проекты, такие как система управления контентом Drupal, инструмент веб-анализа Piwik и программное обеспечение для форумов phpBB, полагаются на компоненты Symfony. Все пакеты из этого фреймворка являются многоразовыми и доступны для бесплатной загрузки на официальном сайте.

Symfony: Знакомство с компонентами веб-фреймворков

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

Вы можете выбрать один из следующих стандартных компонентов:

  • Asset: модуль для генерации URL и версионирования файлов изображений, таблиц стилей CSS и приложений JavaScript.
  • ClassLoader: ClassLoader обеспечивает автоматическую загрузку ваших собственных классов PHP.
  • Debug: предоставляет инструменты для отладки PHP-кода с целью поиска и классификации ошибок.
  • DependencyInjection: позволяет определить стандарты создания объектов для соответствующего веб-проекта.
  • EventDispatcher: элементарный компонент, управляющий коммуникацией отдельных модулей в виде событий.
  • Form: содержит инструменты, которые можно легко использовать для создания многократно используемых HTML-форм.
  • Templating: инструменты для создания системы шаблонов.
  • Перевод: модуль для интернализации проекта.
  • Validator: позволяет проверять созданные классы.
  • Yaml: загружает и сохраняет файлы .yml.

Концепция Model View Controller для структурирования веб-приложений

Symfony позволяет реализовать подход Model View Controller (MVC). Этот архитектурный паттерн делит приложения на три области

  • Данные и основная функциональность (модель),
  • Визуальное представление сформированных данных (представление)
  • Обработка пользовательских вводов (контроллер).

Концепция MVC обеспечивает четкий, хорошо структурированный программный код и высокую степень гибкости для различных компонентов, которые могут обмениваться и повторно использоваться в зависимости от концепции, поскольку они не привязаны к конкретным входным данным. На данном этапе, однако, необходимо сказать, что Symfony не принадлежит к провозглашенной линейке MVC-фреймворков и не содержит интегрированного компонента модели. Если вы создадите новый проект Symfony, то типичная папка с моделями также будет отсутствовать. Используя дополнительные библиотеки ORM (Object Relational Mapper), такие как Doctrine, рекомендуемая SensioLabs, или Propel, вы можете самостоятельно реализовать хранение объектов в системах баз данных.

Для создания презентационного уровня (представления) вашего веб-приложения используйте модуль шаблонов и создайте соответствующие шаблоны, которые могут быть расширены с помощью так называемых хелперов (объектов PHP) и специфических функций. Уровень контроллера имеет имя index.php (находится в папке ‘web’). В Symfony пользовательские входы называются ‘actions’, как и во многих других фреймворках.

Symfony: PHP как пользовательский магнит

Symfony представляет собой набор различных библиотек PHP, поэтому для использования фреймворка у вас должен быть установлен язык сценариев. Для текущей поддерживаемой версии Symfony 2.x серии 2.8 требуется PHP 5.3.9 или выше. Для Symfony 3.1 и 3.2 требуется PHP 5.5.9 или выше. С самого начала команда разработчиков SensioLands задалась целью создать коллекцию компонентов для проектов на PHP, которая могла бы конкурировать с аналогичными фреймворками на других языках. В частности, Ruby on Rails впечатлил французских разработчиков, поэтому они решили сделать отдельные компоненты похожими на структуру популярного фреймворка Ruby.

Таким образом, развитие и успех Symfony Framework тесно связаны с историей языка скриптов. Поскольку он находится в свободном доступе как язык с открытым исходным кодом и всегда был популярен, различные разработчики оптимизировали его в последние годы. Значительный рост производительности, связанный с PHP7, также положительно сказывается на производительности будущих веб-приложений Symfony.

Нисходящая совместимость и LTS-версии обещают преемственность

С 2013 года новая версия Symfony выходит каждые шесть месяцев. Пользователи, зарегистрировавшиеся в сообществе SensioLabsConnect, получают актуальную информацию по электронной почте. Обновление фреймворка каждые шесть месяцев до более высокой версии изначально звучит как очень утомительная и непрактичная задача для сложных веб-приложений. Однако SensioLabs предлагает правильные решения для того, чтобы фреймворк и разработанные приложения имели необходимую преемственность:

  • Обратная совместимость: все обновления Symfony (начиная с версии 2.3) характеризуются обратной совместимостью. Это означает, что разработанные приложения гарантированно продолжают функционировать при переходе на более высокие версии. Однако существуют некоторые исключения, на которые неограниченное обещание совместимости не распространяется. Кроме того, на основные релизы, такие как Symfony 3.0 (4.0 и т.д.), гарантия не распространяется.
  • Долгосрочная поддержка: Версии Symfony обычно поддерживаются в течение восьми месяцев. С версией 2.3 компания SensioLabs выпустила первую версию Symfony с долгосрочной поддержкой (LTS). Такие LTS-версии планируются каждые два года и обеспечивают 36 месяцев обновлений для исправления программных ошибок и 48 месяцев исправлений безопасности. Помимо запланированной второй LTS-версии 2.7, следующая версия 2.8 также получила расширенный период поддержки.
  • Процесс непрерывной миграции для 3.0: при переходе на последнюю основную версию, Symfony 3.0, команда разработчиков сопровождает вас, используя концепцию непрерывного пути обновления. Как разработчик приложений Symfony, вы можете получить подробные советы по пересмотру строк кода в версиях 2.x, постепенно адаптируя их к новым спецификациям. Затем вы можете перейти на новую версию каркаса веб-приложений.

Преимущества и недостатки Symfony Framework

Поиск подходящего фреймворка PHP в прошлом был похож на поиск иголки в стоге сена: желание получить мощный набор библиотек для популярного веб-языка привело к разработке многочисленных представителей, которые совершенно по-разному подходили для различных типов проектов. Однако несколько фреймворков — в том числе Symfony — сумели произвести впечатление на большое количество PHP-разработчиков благодаря своему постоянному развитию. Этот фреймворк особенно хорош, когда речь идет о структурировании и связывании отдельных модулей, которые могут быть использованы для реализации различных веб-приложений, что способствовало его высокой оценке сообществом. Благодаря долгосрочной поддержке версий и общему обещанию обеспечить максимально возможный уровень обратной совместимости, команда разработчиков SensioLabs также обеспечивает необходимую основу для продолжения проекта Symfony.

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

Для кого подходит коллекция компонентов PHP?

Все модули Symfony характеризуются тем, что работают как по отдельности, так и в связке. Последнее не обязательно должно быть стандартной связкой фреймворка: вы также можете создать свой собственный микро-фреймворк, который компилируется только с выбранными вами компонентами. Таким образом, вы избежите необходимости работать с перегруженной библиотечной структурой, которая выходит далеко за рамки требований разрабатываемого проекта. Но Symfony масштабируется и в другую сторону и может быть быстро преобразован в базовую конструкцию для требовательных веб-проектов с дополнительными модулями. На Symfony основаны не только вышеупомянутые приложения (полностью или частично), но и сайт сервиса потоковой передачи музыки Spotify. Французский сайт модного журнала Vogue также выигрывает от использования PHP-фреймворка.

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

Оцените статью
cdelat.ru
Добавить комментарий