Новое в Symfony 7.2: Устаревания
!tagged
.Выход новой минорной версии Symfony — это хорошая возможность отказаться от некоторых функций, чтобы подготовиться к их удалению в следующей основной версии. В Symfony 7.2 мы объявили устаревшими следующие функции, которые будут удалены в Symfony 8.0.
Объявлены устаревшие параметры настройки ID сессии
- Pull Request: [FrameworkBundle] Deprecate
session.sid_length
andsession.sid_bits_per_character
config options #57805 Alexandre Daubois
PHP определяет две опции INI, под названием session.sid_length
и session.sid_bits_per_character
. Разработчики PHP признали эти опции проблемными, поскольку разработчики могли устанавливать слишком короткие (и, следовательно, небезопасные) или слишком длинные идентификаторы сессий (что не нужно и потребляет больше ресурсов процессора без существенных преимуществ для безопасности). Поэтому, начиная с PHP 8.4, они отказались от этих опций, а в Symfony 7.2 мы отказались от соответствующих опций в framework.session
.
Удаление значения по умолчанию gc_probability
- Pull Request: [FrameworkBundle] Remove default value for
gc_probability
config option #58165 Nicolas Grekas
Когда открывается сессия, PHP вызывает обработчик сборщика мусора случайным образом, основываясь на вероятности, определяемой session.gc_probability
/session.gc_divisor
(например, конфигурация 5/100 означает 5-процентную вероятность вызова сборщика мусора).
В Symfony опция session.gc_probability
имела значение по умолчанию 1
. Это значение отменяло соответствующие настройки PHP INI, но мы поощряем использование встроенных функций сессий PHP (включая папку сессии по умолчанию). В результате мы убрали это значение по умолчанию и теперь полагаемся на настройки PHP INI.
Объявлены устаревшими дополнительные параметры конфигурации сессии
- Pull Request: [HttpFoundation] Deprecate more options in
NativeSessionStorage
#58244 Alexandre Daubois
В PHP 8.4 также объявлены устаревшими другие опции, связанные с сессиями. Следовательно, при использовании NativeSessionStorage
теперь не рекомендуется настраивать опции: referer_check
, use_only_cookies
, use_trans_sid
, trans_sid_hosts
и trans_sid_tags
.
Объявлены устаревшими пустые идентификаторы пользователей
В Symfony некоторые аутентификаторы, такие как FormLoginAuthenticator
и JsonLoginAuthenticator
, уже проверяют, является ли предоставленный идентификатор пользователя пустой строкой, и выбрасывают исключение, если это так.
Мы считаем, что все аутентификаторы должны обеспечивать такое поведение, поэтому мы обновили следующее:
- Метод
getUserIdentifier()
вUserInterface
теперь должен возвращать непустую строку; - Передача пустого идентификатора пользователя в конструктор
UserBadge
теперь считается устаревшей.
Опция tags
в адаптере cache.app
объявлена устаревшей
- Pull Request: [FrameworkBundle] Deprecate making
cache.app
adapter taggable #57927 Alexandre Daubois
Компонент Cache позволяет прикреплять теги к элементам кэша в качестве одного из рекомендуемых методов аннулирования кэша. Однако включение функции тегов в адаптере cache.app
приводило к проблемам.
Чтобы решить эту проблему, мы отказались от опции tags
в адаптере cache.app
. Вместо этого используйте адаптер cache.app.taggable
.
Объявлен устаревшим тэг !tagged
- Pull Request: [DependencyInjection] Deprecate
!tagged
tag, use!tagged_iterator
instead #57934 Alexandre Daubois
При работе с тегами сервисов тег !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
официально признан устаревшим.