Вопрос-ответ

Популярные вопросы с ответами для владельцев и разработчиков сайтов

В чём разница между Symfony 4 и 5?

Основная разница между Symfony 4 и 5 заключается в том, что Symfony 5 удалила все устаревшие (deprecated) функции из Symfony 4.4 и представила новые компоненты (String и Notifier), при этом сохранив полную функциональную совместимость по новым возможностям. Фактически Symfony 4.4 и 5.0 вышли одновременно и имеют одинаковый набор новых функций, но 5.0 «очищена» от всего, что было помечено как устаревшее в предыдущих версиях . Symfony 4.4 — это последний LTS-релиз ветки 4.x, который остаётся в поддержке дольше, в то время как Symfony 5.0 открывает новую мажорную ветку .

Философия одновременного релиза

Symfony 4.4 и 5.0 были выпущены в один день . Это не случайность, а продуманная стратегия обновления. Ветки 4.x и 5.x разрабатывались параллельно:

  • Symfony 4.4 — последняя версия в ветке 4.x, версия с долгосрочной поддержкой (LTS). Она содержит все новые функции, но сохраняет устаревшие методы для обратной совместимости .
  • Symfony 5.0 — первая версия новой мажорной ветки. Она имеет те же новые функции, что и 4.4, но удаляет всё, что было объявлено устаревшим в 4.x .

Такая схема позволяет разработчикам сначала обновиться до 4.4, исправить все предупреждения об устаревании (deprecations), а затем практически безболезненно перейти на 5.0 .

Ключевые различия в таблице

КритерийSymfony 4.4 (LTS)Symfony 5.0+
Устаревшие функции (Deprecations) Содержит все deprecations из предыдущих версий 4.x, но они пока работают Все deprecations полностью удалены из кода. Требует чистого кода без предупреждений
Требования к PHP PHP 7.1.3 или выше PHP 7.2.5 или выше
Новые компоненты String component (работа с UTF-8 строками), Notifier component (уведомления через Slack, Telegram, SMS)
Удалённые компоненты Удалены Templating component (полный переход на Twig), старая система безопасности
Размер кода Базовый На 37 000 строк кода меньше, чем в 4.x
Производительность Хорошая Работает примерно на 7% быстрее, чем 4.x
Длительность поддержки 3 года на исправления ошибок, 4 года на безопасность (LTS) 8 месяцев (стандартная поддержка)

Что нового появилось в Symfony 4.4 и 5.0 одновременно

Поскольку обе версии разрабатывались параллельно, они получили одинаковый набор новых возможностей :

Новый компонент Mailer

Symfony 5 заменил устаревший SwiftMailer на новый Symfony Mailer, который интегрируется с Mime-компонентом для создания и отправки сложных email-сообщений .

Улучшенный HttpClient

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

Новый способ работы с секретами (Secrets Management)

Система для безопасного хранения чувствительных данных (паролей, ключей API) с возможностью их шифрования и хранения в системе контроля версий .

Preloading для PHP 7.4

Symfony 4.4 и 5.0 поддерживают механизм preloading из PHP 7.4, что даёт значительный прирост производительности .

Улучшенная обработка ошибок

Новый ErrorHandler-компонент заменил Debug-компонент, сделав исключения Symfony более современными и понятными .

0564

Что было удалено в Symfony 5.0

Главное отличие Symfony 5 от 4 — это удаление всего, что помечалось как @deprecated в версиях 4.x . Вот основные удаления :

  • Templating component — полностью убран в пользу Twig как единственного шаблонизатора
  • Старая система безопасности (Security) — заменена на новую компонентную архитектуру
  • Устаревшие методы формы — например, FormTypeInterface::getName() больше не используется
  • Множество polyfill-библиотек — для старых версий PHP, которые больше не поддерживаются

Кроме того, Symfony 5.0 требует более строгой типизации и следования современным стандартам PHP .

Практические последствия для разработчика

Обновление с 4.4 до 5.0

Процесс обновления выглядит так :

  1. Убедитесь, что ваш проект работает на Symfony 4.4
  2. Запустите приложение в окружении APP_ENV=dev и исправьте все deprecation warnings
  3. Измените в composer.json значение extra.symfony.require на "^5.0"
  4. Выполните composer update

Symfony Flex автоматически ограничит версии всех symfony-компонентов до 5.x .

Совместимость с CMS и конструкторами

Если вы используете готовые CMS, например Joomla, или работаете с конструкторами вроде SitePro.by, разница между Symfony 4 и 5 для вас не критична — эти платформы скрывают детали реализации фреймворка. Но если вы разрабатываете собственные приложения на Symfony, миграция с 4 на 5 потребует внимания к устаревшим функциям.

Какую версию выбрать для нового проекта

  • Symfony 4.4 (LTS) — подходит для долгосрочных проектов, которые не планируют часто обновляться. Поддержка этой версии длится дольше (4 года на безопасность), но код должен быть готов к eventualному переходу на 5.x .
  • Symfony 5.x — выбор для новых проектов, которые хотят использовать последние возможности PHP и минимальный, чистый код фреймворка. Однако срок поддержки не-LTS версий ограничен 8 месяцами .

На практике большинство разработчиков используют последнюю стабильную версию Symfony 5 (или уже 6/7) для новых проектов, а 4.4 остаётся на сопровождении legacy-систем .

Главный вывод: Symfony 5 — это не революция, а эволюция и «уборка» после стабильной 4-й ветки. Все новые функции вы получите уже в 4.4, но 5.0 требует от вашего кода большей чистоты и современности.