Ключевые нововведения Symfony 7.4
Symfony 7.4: устаревание XML, UUID v7, взвешенные workflow, общая директория share/, многошаговые формы, кеширование по RFC 9111, валидация видео, подпись сообщений, улучшения безопасности, DX и интеграция с PHP 8.4.
Symfony 7.4 продолжает традицию эволюционного развития, сохраняя обратную совместимость и предлагая десятки улучшений. В релизе — отказ от XML-конфигурации, современные UUID v7, мощные инструменты безопасности, встроенное HTTP-кеширование, валидация видео, взвешенные workflow и многое другое для повышения производительности и удобства разработки.
Статьи про Symfony
Список новых фич
- Устаревание XML-конфигурации в пользу YAML и PHP с улучшенным автодополнением и расширенными массивами.
- Новые функции Twig
access_decision()иaccess_decision_for_user()для детализированных решений о доступе. - Добавление метаданных к объектам Vote через свойство
extraDataдля сложных стратегий безопасности. - Генерация UUID v7 по умолчанию с микросекундной точностью и тестовой фабрикой
MockUuidFactory. - Встроенное кеширование HTTP-клиента по стандарту RFC 9111 с поддержкой общих пулов и настройкой TTL.
- Новое ограничение
Videoдля валидации видеофайлов с контролем размеров, кодеков и форматов через FFmpeg. - Взвешенные переходы в Workflow для моделирования процессов с количественными требованиями (например, сборка деталей).
- Улучшенный вывод исключений в терминале в виде чистых текстовых трассировок вместо HTML.
- Новая общая директория
share/для данных, общих для нескольких серверов (кеши, хранилища). - Улучшенная фильтрация валют с автоматическим скрытием устаревших и методами для проверки по странам и датам.
- Многошаговые формы (Form Flows) с использованием
AbstractFlowTypeи навигацией через специальные кнопки. - Поддержка Enum в вызываемых командах и новый атрибут
#[MapInput]для DTO. - Интерактивные вызываемые команды с атрибутами
#[Interact]и#[Ask]для упрощённого ввода. - Отделимые помощники контроллера через класс
ControllerHelperи атрибут#[AutowireMethodOf]. - Улучшения атрибутов: объединённые типы в
#[CurrentUser], поддержка списка сред в#[Route], повторяемый#[AsDecorator]. - Устаревание метода
Request::get()и парсинг тела запроса для не-POST методов (PUT, PATCH и др.). - Устаревание переопределения HTTP-методов GET, HEAD, CONNECT и TRACE для повышения безопасности.
- Таймаут для Question Helper, угадыватель типа Enum для форм и команда для генерации OIDC токенов.
- Улучшенные дампы
dd()иdump()с рендерингом HTML только при наличии заголовкаAccept: html. - Подготовка сессии в функциональных тестах через метод
getSession()и улучшенная отладка маршрутов. - Автоматические атрибуты доступности
aria-invalidиaria-describedbyдля полей форм с ошибками. - Нативная интеграция с режимом Worker FrankenPHP без установки дополнительных пакетов.
- Подпись сообщений Messenger через HMAC для обеспечения целостности и предотвращения подделок.
- Устаревание "текучего" PHP-интерфейса конфигурации в пользу массивов с полной поддержкой автодополнения.
- Расширение валидации и сериализации сторонних классов через PHP-атрибуты
#[ExtendsValidationFor]и#[ExtendsSerializationFor]. - Нативный HTML5-парсер при использовании PHP 8.4 для увеличения скорости.
- Разрешение любых протоколов в ограничении
Urlчерез символ'*'. - Поддержка HTTP-метода QUERY в компонентах Request, HttpClient и профилировщике.
- Упрощённая конфигурация тегов ресурсов через атрибут
#[AutoconfigureResourceTag]. - Поддержка Enum в компоненте Workflow для местоположений, начальных состояний и переходов.
- Хранилище блокировок DynamoDB через отдельный пакет и новые Doctrine-типы
day_pointиtime_point. - Явные query-параметры при генерации URL через ключ
_query. - Поддержка структурированных MIME-суффиксов в методе
Request::getFormat(). - Интеграция с Microsoft Graph для отправки электронной почты.
- Класс
StaticMessageдля непереводимых сообщений и новое утверждениеassertEmailAddressNotContains(). - Профилирование запросов EventSource (Server-Sent Events) в панели Ajax профилировщика.
Опубликовано:


