Symfony

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

Что важно знать
Symfony
Тип Веб-фреймворк
Автор Фабиан Потансье
Разработчик сообщество Symfony
Написана на PHP
Интерфейс Веб-интерфейс, командная строка
Движок Symfony
Операционная система многоплатформенное ПО
Языки интерфейса Многоязычный
Первый выпуск 22 октября 2005
Аппаратная платформа x64
Последняя версия 7.3 (май 2025)
Бета-версия 7.4.0-BETA2
8.0.0-BETA2 (2 ноября 2025)
Репозиторий github.com/symfony/symfo…
Состояние активное
Лицензия MIT
Сайт symfony.com

Цели

Symfony ориентирован на ускорение создания и сопровождения веб-приложений, а также на замену рутинной работы по написанию повторяющегося кода. Разработка фреймворка изначально была рассчитана на корпоративные приложения и предоставляла разработчикам полный контроль над конфигурацией — от структуры каталогов до сторонних библиотек, практически все аспекты можно кастомизировать[1]. Для соответствия требованиям корпоративной разработки в поставку входят вспомогательные инструменты для тестирования, отладки и документирования проектов[2].

Symfony практически не создаёт избыточной нагрузки на производительность при использовании кэширования байткода.

Требования

Основные требования фреймворка касаются программного обеспечения, в то время как аппаратные потребности зависят от сложности и посещаемости создаваемого приложения.

Программные требования

Ключевым элементом для работы Symfony является корректно настроенное PHP-окружение. Для актуальных версий фреймворка (например, 7.x) требуются[3]:

  • PHP версии 8.2 или выше[3].
  • Набор стандартных PHP-расширений, включая Ctype, iconv, JSON, PCRE, Session, SimpleXML и Tokenizer[4].
  • Менеджер пакетов Composer для установки фреймворка и управления зависимостями[4].

Для проверки соответствия окружения всем требованиям можно использовать утилиту Symfony CLI, выполнив команду symfony check:requirements[4].

Аппаратные рекомендации

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

  • Среда разработки:
    • Процессор (CPU): любой современный процессор x64[5].
    • Оперативная память (RAM): не менее 2 ГБ, рекомендуется 4 ГБ и более, особенно при использовании Docker или виртуальных машин[5].
    • Дисковое пространство: несколько гигабайт для проекта, зависимостей и кэша[6].
  • Производственная среда (сервер):
    • Малые проекты с низкой посещаемостью: от 1 ядра CPU (1 ГГц), от 512 МБ до 2 ГБ RAM, от 10 ГБ дискового пространства[7].
    • Средние и крупные проекты с высокой посещаемостью: от 2 ядер CPU, от 4 ГБ RAM, от 30 ГБ дискового пространства[7].

Symfony является кроссплатформенным решением и может работать на Linux, Windows и macOS[8]. Для производственных серверов чаще всего используется Linux[9] и требуется веб-сервер, такой как Apache или Nginx[8].

Технические особенности

Symfony во многом вдохновлён фреймворком Spring Framework[10][11].

В архитектуре Symfony широко используются как собственные компоненты, так и сторонние открытые PHP-проекты[12]. Ключевыми собственными компонентами, формирующими ядро фреймворка, являются Dependency Injector (контейнер внедрения зависимостей) и Event Dispatcher (диспетчер событий). Среди интегрированных сторонних библиотек:

Форматы конфигурации

Фреймворк позволяет разработчикам выбирать между несколькими форматами для файлов конфигурации: YAML, XML и PHP[14]. Все форматы компилируются в оптимизированный PHP-код и кэшируются, поэтому выбор не влияет на производительность[14].

  • YAML (.yaml) — формат по умолчанию, ценится за краткость и читаемость[15]. Собственный парсер Symfony YAML является одним из широко используемых компонентов фреймворка.
  • XML (.xml) — его преимуществом является возможность валидации и автодополнения в IDE[15].
  • PHP (.php) — позволяет использовать всю мощь языка для динамического определения конфигурации[14].

Типы интерфейсов

Как бэкенд-фреймворк, Symfony предоставляет инструменты для создания различных типов интерфейсов[12]:

  • Веб-интерфейс (Web UI) — создаётся разработчиками для конечных пользователей с помощью HTML, CSS и JavaScript. Symfony может служить бэкендом для одностраничных приложений (SPA), разработанных на React, Vue или Angular[16].
  • Интерфейс командной строки (CLI) — реализован через компонент Console и используется для широкого круга задач: генерации кода, управления кэшем, выполнения миграций базы данных и запуска встроенного веб-сервера[17].
  • Административные интерфейсы — для управления данными в приложении могут быть быстро созданы с помощью сторонних пакетов, таких как EasyAdmin или SonataAdmin[18].

Шаблонизация

Для генерации HTML-страниц по умолчанию используется шаблонизатор Twig[19]. Он отделяет логику представления от бизнес-логики приложения, что повышает безопасность за счёт автоматического экранирования вывода[20]. Файлы шаблонов (.html.twig) используют синтаксис с двойными фигурными скобками ( для вывода переменных и {%...%} для управляющих конструкций)[21]. Наряду с Twig, фреймворк также поддерживает использование нативных PHP-шаблонов благодаря компоненту Templating[21].

Экспериментальные возможности

В Symfony существует концепция «экспериментальных возможностей» (Experimental Features), которая позволяет внедрять новые функции, чей API ещё не считается стабильным[22]. Такие функции помечаются тегом @experimental и не имеют гарантий обратной совместимости, что позволяет разработчикам собрать отзывы от сообщества перед окончательной стабилизацией API[23]. Экспериментальная функция может существовать в таком статусе, как правило, не более одного минорного релиза и никогда не добавляется в LTS-версии[22].

Локализация

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

Для локализации приложения используется компонент Translator, который поддерживает стандарт ICU для идентификации локалей. Это позволяет разработчику перевести приложение практически на любой язык, включая его региональные варианты (например, ru для русского или de_DE для немецкого в Германии). Процесс локализации включает создание файлов переводов в форматах XLIFF (.xlf), YAML (.yaml) или PHP (.php), которые размещаются в директории translations/[24]. Вывод переведённых сообщений осуществляется через сервис-переводчик в коде или с помощью специальных фильтров в шаблонах Twig[24].

Встроенные инструменты Symfony имеют разный уровень языковой поддержки. Интерфейс командной строки (bin/console) по умолчанию использует английский язык без возможности локализации. В то же время веб-инструменты, такие как панель отладки (Web Debug Toolbar) и профилировщик (Profiler), являются переводимыми, и язык их интерфейса автоматически адаптируется под текущую локаль приложения[25]. Сообщения для этих инструментов, а также для компонентов валидации и безопасности, переведены сообществом на множество языков, включая:

Спонсоры

Фреймворк Symfony поддерживает компания SensioLabs, французский разработчик программного обеспечения и поставщик профессиональных сервисов[26]. Изначально проект назывался Sensio Framework[27], и все классы были с префиксом sf. Позднее, при открытии исходного кода, название было изменено на symfony (с версии 2 и выше — Symfony) для согласования с префиксами классов и общей концепцией[28].

Использование на практике

  • Symfony используется в открытой системе вопросов и ответов Askeet и ряде других приложений, включая сайт Delicious[29].
  • В определённый момент фреймворк использовался для поддержки Yahoo! Bookmarks с 20 миллионами пользователей[30].
  • С февраля 2009 часть кода Dailymotion.com переведена на Symfony, процесс продолжается[31].
  • Symfony применяется в OpenSky (платформа для социального шопинга), eRepublik (массовая браузерная стратегическая онлайн-игра), а также во фреймворке eZ Publish 5-й версии[32].
  • Компоненты Symfony используются в Drupal (начиная с версии 8), Magento (начиная с версии 2), phpBB и других крупных платформах[33][34][35].
  • Фреймворк используется в Meetic — одной из крупнейших онлайн-платформ для знакомств[36].
  • Компоненты Symfony встроены в другие фреймворки, включая Laravel, а также микрофреймворк Silex[34].
  • Сайт Vogue Paris также построен на Symfony[37].
  • BlaBlaCar, крупнейший в мире сервис для карпулинга, использует и масштабирует свою платформу на Symfony[38][39].
  • Поисковая система для отелей Trivago использовала фреймворк для создания новых приложений в рамках модернизации архитектуры[35].
  • Рекламная платформа Spotify Ad Studio использует API Platform, которая построена на базе Symfony[40].
  • Среди более поздних государственных и корпоративных проектов — официальный сайт Президента Франции (Elysée.fr), система управления лидами Audi France, платформа для электронных подписей Yousign, Информационная система маркировки пищевых продуктов Европейской комиссии, а также онлайн-магазин мебели Vente-unique.com[41].

На официальном сайте Symfony представлен полный перечень проектов и витрина сайтов, использующих данный фреймворк[42].

Выпуски

Symfony использует модель календарных (time-based) релизов: новая версия публикуется каждые шесть месяцев — в мае и ноябре. Этот процесс формирования релизов введён начиная с версии 2.2, а с версии 2.4 его правила стали обязательны.

Обычные версии поддерживаются восемь месяцев, а версии с длительной поддержкой (LTS) — три года для исправлений ошибок и четыре года для обновлений безопасности[43]. LTS-релизы публикуются раз в два года.

Последний стабильный релиз — версия 7.3, а текущая LTS-версия — 6.4[44]. В ноябре 2025 года запланирован выпуск следующей LTS-версии 7.4 и новой мажорной версии 8.0[45]. По состоянию на 2 ноября 2025 года они находились в статусе BETA2[46].

Цвет Значение
Красный Релиз более не поддерживается
Жёлтый Поддерживаются только исправления безопасности
Зелёный Релиз поддерживается
Синий Будущий релиз
История версий
Версия Дата релиза Поддержка Требуемая версия PHP Конец поддержки Примечания Примечания
1.0 январь 2007 три года (красный) ≥ 5.0 январь 2010 [47]
1.1 июнь 2008 один год (красный) ≥ 5.1 июнь 2009 Исправления безопасности до июня 2010
1.2 декабрь 2008 один год (красный) ≥ 5.2 ноябрь 2009
1.3 ноябрь 2009 один год (красный) ≥ 5.2.4 ноябрь 2010
1.4 ноябрь 2009 три года (красный) ≥ 5.2.4 ноябрь 2012 LTS-версия. 1.4 идентична 1.3, но не поддерживает устаревшие функции 1.3[48].
2.0 июль 2011 (красный) ≥ 5.3.2 март 2013 Последний выпуск 2.0.x — Symfony 2.0.25[49].
2.1 сентябрь 2012 восемь месяцев (красный) ≥ 5.3.3 июнь 2013 Больше компонентов в стабильном API
2.2 март 2013 восемь месяцев (красный) ≥ 5.3.3 ноябрь 2013 Новые функции
2.3 июнь 2013 три года (красный) ≥ 5.3.3 май 2016 Первый LTS-релиз[50].
2.4 ноябрь 2013 восемь месяцев (красный) ≥ 5.3.3 июль 2014 Первый 2.x-релиз с полной обратной совместимостью
2.5 май 2014 восемь месяцев (красный) ≥ 5.3.3 январь 2015
2.6 ноябрь 2014 восемь месяцев (красный) ≥ 5.3.3 июль 2015
2.7 май 2015 три года (красный) ≥ 5.3.9 май 2018 LTS
2.8 ноябрь 2015 три года (красный) ≥ 5.3.9 ноябрь 2018 LTS
3.0 ноябрь 2015 восемь месяцев (красный) ≥ 5.5.9 июль 2016
3.1 май 2016 восемь месяцев (красный) ≥ 5.5.9 январь 2017
3.2 ноябрь 2016 восемь месяцев (красный) ≥ 5.5.9 июль 2017
3.3 июнь 2017 восемь месяцев (красный) ≥ 5.5.9 январь 2018
3.4 ноябрь 2017 три года (красный) ≥ 5.5.9 ноябрь 2020 LTS
4.0 ноябрь 2017 восемь месяцев (красный) ≥ 7.1.3 июль 2018 Отказ от поддержки HHVM
4.1 май 2018 восемь месяцев (красный) ≥ 7.1.3 январь 2019
4.2 ноябрь 2018 восемь месяцев (красный) ≥ 7.1.3 июль 2019
4.3 май 2019 восемь месяцев (красный) ≥ 7.1.3 январь 2020
4.4 ноябрь 2019 три года (красный) ≥ 7.1.3 ноябрь 2022 LTS[51]
5.0 ноябрь 2019 восемь месяцев (красный) ≥ 7.2.5 июль 2020 Опубликован Фабианом Потансье на SymfonyCon Amsterdam (21 ноября 2019)[52]
5.1 май 2020 восемь месяцев (красный) ≥ 7.2.5 январь 2021
5.2 ноябрь 2020 восемь месяцев (красный) ≥ 7.2.5 июль 2021 [53]
5.3 май 2021 восемь месяцев (красный) ≥ 7.2.5 январь 2022 Стабильный релиз[54]
5.4 ноябрь 2021 три года (жёлтый) ≥ 7.2.5 ноябрь 2025 LTS [55]
6.0 ноябрь 2021 восемь месяцев (красный) ≥ 8.0.2 январь 2023 Период поддержки продлён на полгода[56][57]
6.1 май 2022 восемь месяцев (красный) ≥ 8.1 январь 2023 [58]
6.2 ноябрь 2022 восемь месяцев (красный) ≥ 8.1 июль 2023 [59]
6.3 май 2023 восемь месяцев (красный) ≥ 8.1 январь 2024 [60]
6.4 ноябрь 2023 три года (зелёный) ≥ 8.1 ноябрь 2027 LTS [61]
7.0 ноябрь 2023 восемь месяцев (красный) ≥ 8.2 июль 2024 [62]
7.1 май 2024 восемь месяцев (красный) ≥ 8.2 январь 2025 [63]
7.2 ноябрь 2024 восемь месяцев (красный) ≥ 8.2 июль 2025 [64]
7.3 май 2025 восемь месяцев (зелёный) ≥ 8.2 январь 2026 [65]
7.4 ноябрь 2025 три года (зелёный) ≥ 8.2 ноябрь 2029 LTS[66]
8.0 ноябрь 2025 восемь месяцев (зелёный) июль 2026 Новая мажорная версия[45]

Примечания

Литература

  • Kerrial Beckett Newham. Symfony 6. Leanpub, 2023.
  • Fabien Potencier. Symfony 6: The Fast Track. Leanpub, 2022. Книга регулярно обновляется (последнее обновление — май 2024 года) и имеет официальный перевод на русский язык: Symfony 6. Быстрый старт[1][2].
  • Fabien Potencier, François Zaninotto. The Definitive Guide to symfony. Apress, 2007. ISBN 1-59059-786-9.
  • Fabien Potencier. Practical symfony. Sensio Labs Books, 2009. Doctrine edition: ISBN 978-2-918390-06-0; Propel edition: 978-2918390077; также испанское издание доступно на lulu.com.
  • Fabien Potencier, Hugo Hamon: Symfony, Mieux développer en PHP avec symfony 1.2 et Doctrine. Eyrolles, 2009. ISBN 978-2-212-12494-1 (французское издание).
  • Tim Bowler, Wojciech Bancer. Symfony 1.3 Web Application Development. Packt, 2009. ISBN 978-1-84719-456-5.

Ссылки

  1. Symfony 6: The Fast Track. Leanpub. Дата обращения: 3 ноября 2025.
  2. Symfony 6. Быстрый старт. Leanpub. Дата обращения: 3 ноября 2025.