Ключевые нововведения Symfony 7.4

Symfony 7.4: устаревание XML, UUID v7, взвешенные workflow, общая директория share/, многошаговые формы, кеширование по RFC 9111, валидация видео, подпись сообщений, улучшения безопасности, DX и интеграция с PHP 8.4.

Ключевые нововведения Symfony 7.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 профилировщика.

Опубликовано: