Новое в Symfony 7.2: Устаревания
!tagged.Выход новой минорной версии Symfony — это хорошая возможность отказаться от некоторых функций, чтобы подготовиться к их удалению в следующей основной версии. В Symfony 7.2 мы объявили устаревшими следующие функции, которые будут удалены в Symfony 8.0.
Объявлены устаревшие параметры настройки ID сессии
- Pull Request: [FrameworkBundle] Deprecate session.sid_lengthandsession.sid_bits_per_characterconfig 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_probabilityconfig 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.appadapter taggable #57927 Alexandre Daubois
Компонент Cache позволяет прикреплять теги к элементам кэша в качестве одного из рекомендуемых методов аннулирования кэша. Однако включение функции тегов в адаптере cache.app приводило к проблемам.
Чтобы решить эту проблему, мы отказались от опции tags в адаптере cache.app. Вместо этого используйте адаптер cache.app.taggable.
Объявлен устаревшим тэг !tagged
- Pull Request: [DependencyInjection] Deprecate !taggedtag, use!tagged_iteratorinstead #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 официально признан устаревшим.