Новое в Symfony 7.2: Устаревания

Источник: «New in Symfony 7.2: Deprecations»
В Symfony 7.2 устарело несколько функций, включая параметры конфигурации сессии, пустые идентификаторы пользователей и тег !tagged.

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

Объявлены устаревшие параметры настройки ID сессии

PHP определяет две опции INI, под названием session.sid_length и session.sid_bits_per_character. Разработчики PHP признали эти опции проблемными, поскольку разработчики могли устанавливать слишком короткие (и, следовательно, небезопасные) или слишком длинные идентификаторы сессий (что не нужно и потребляет больше ресурсов процессора без существенных преимуществ для безопасности). Поэтому, начиная с PHP 8.4, они отказались от этих опций, а в Symfony 7.2 мы отказались от соответствующих опций в framework.session.

Удаление значения по умолчанию gc_probability

Когда открывается сессия, PHP вызывает обработчик сборщика мусора случайным образом, основываясь на вероятности, определяемой session.gc_probability/session.gc_divisor (например, конфигурация 5/100 означает 5-процентную вероятность вызова сборщика мусора).

В Symfony опция session.gc_probability имела значение по умолчанию 1. Это значение отменяло соответствующие настройки PHP INI, но мы поощряем использование встроенных функций сессий PHP (включая папку сессии по умолчанию). В результате мы убрали это значение по умолчанию и теперь полагаемся на настройки PHP INI.

Объявлены устаревшими дополнительные параметры конфигурации сессии

В PHP 8.4 также объявлены устаревшими другие опции, связанные с сессиями. Следовательно, при использовании NativeSessionStorage теперь не рекомендуется настраивать опции: referer_check, use_only_cookies, use_trans_sid, trans_sid_hosts и trans_sid_tags.

Объявлены устаревшими пустые идентификаторы пользователей

В Symfony некоторые аутентификаторы, такие как FormLoginAuthenticator и JsonLoginAuthenticator, уже проверяют, является ли предоставленный идентификатор пользователя пустой строкой, и выбрасывают исключение, если это так.

Мы считаем, что все аутентификаторы должны обеспечивать такое поведение, поэтому мы обновили следующее:

Опция tags в адаптере cache.app объявлена устаревшей

Компонент Cache позволяет прикреплять теги к элементам кэша в качестве одного из рекомендуемых методов аннулирования кэша. Однако включение функции тегов в адаптере cache.app приводило к проблемам.

Чтобы решить эту проблему, мы отказались от опции tags в адаптере cache.app. Вместо этого используйте адаптер cache.app.taggable.

Объявлен устаревшим тэг !tagged

При работе с тегами сервисов тег !tagged_iterator в файлах YAML и XML позволяет внедрить все сервисы, помеченные определённым тегом:

# config/services.yaml
services:
# ...

App\HandlerCollection:
# inject all services tagged with 'app.handler'
arguments:
- !tagged_iterator 'app.handler'

Тег !tagged_iterator заменил тег !tagged, по-прежнему поддерживавшийся в файлах YAML/XML. В Symfony 7.2 тег !tagged официально признан устаревшим.

Комментарии


Дополнительные материалы

Предыдущая Статья

Различные (и современные) способы переключения контента

Следующая Статья

Улучшение производительности с делегированием событий