Для Symfony 6.1 потребуется PHP версии 8.1 из-за предзагрузки классов
8650

Для Symfony 6.1 потребуется PHP версии 8.1 из-за предзагрузки классов


Исторически сложилось так, что мы всегда старались поддерживать минимальную версию PHP для новой основной версии Symfony (X.0) для всех ее минорных версий (X.Y).

Но недавно мы столкнулись с проблемой предварительной загрузки PHP.

Коротко говоря, до версии PHP 8.1 типы свойств должны быть доступны при предварительной загрузке класса. Это проблема для Symfony, когда свойство ссылается на тип необязательной зависимости.

Мы рассмотрели несколько вариантов решения этой проблемы: запретить предварительную загрузку неавтозагружаемых классов (но чем больше типизированных свойств использует Symfony, тем меньше классов будет предварительно загружено), удалить типы свойств (это не работает для классов не-Symfony, которые все еще могут использовать типы свойств). Но тогда сама предварительная загрузка станет практически бесполезной, начиная с PHP 8.1. Так зачем нам поддерживать сложную логику для обхода этой проблемы в PHP и ограничивать себя в использовании типов свойств только для того, чтобы поддерживать PHP 8.0 в течение следующих 4 лет (Symfony 6.0 поддерживает PHP 8.0+)?

Теперь, когда вы лучше понимаете контекст, мы рассмотрели последний вариант: увеличить минимальное требование к PHP до версии PHP 8.1 в Symfony 6.1. По данным Packagist, более 70% установок фреймворка используют PHP 8.1, и этот показатель быстро растет. Поэтому мы уверены, что подавляющее большинство наших пользователей будут использовать PHP 8.1, когда 6.1 выйдет в конце мая 2022 года. И новая Ubuntu LTS также будет поддерживать PHP 8.1.

Даже несмотря на массовую поддержку сообщества, мы понимаем, что бывают особые ситуации, которые не позволят своевременно обновить некоторые проекты. Поэтому, чтобы смягчить минимальный скачок версии PHP, мы продлеваем поддержку Symfony 6.0 еще на 6 месяцев. Таким образом, окончание срока поддержки Symfony 6.0 и 6.1 произойдет в одно и то же время.

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