Новое в Symfony 7.2: Переработан компонент TypeInfo
TypeInfo и улучшена его стабильность.- Pull Request: [TypeInfo] Redesign Type methods and nullability #57630 Mathias Arlaud
- Pull Request: [TypeInfo] Remove
@experimentaltag #58852 Mathias Arlaud
На функции Symfony распространяется Backward Compatibility Promise, гарантирующая, что вы сможете безопасно переходить с одной версии на другую (например, с 7.0 на 7.1, 7.2 и т. д.), не сталкиваясь с какими-либо изменениями.
Однако некоторые избранные возможности представлены как экспериментальные. Это возможности, способные изменить свой API и другое поведение на основе полученных о них отзывов. Именно так произошло с компонентом TypeInfo, представленным как экспериментальный в Symfony 7.1.
Компонент TypeInfo извлекает информацию о типах PHP из аргументов методов, возвращаемых типов и необработанных строк. После нескольких месяцев его использования в реальных приложениях и интеграции в другие пакеты и библиотеки мы решили улучшить его по нескольким направлениям:
- Введены интерфейсы
CompositeTypeInterfaceиWrappingTypeInterfaceдля лучшего описания принадлежности типа к нескольким типам или его обёртывания; - Добавлен
NullableType, расширяющийUnionTypeи являющийсяWrappingTypeInterface, что значительно упрощает распознаваниеnullableтипа и получение связанного с ним non-nullable типа; - Удалён метод
__call(), используемыйCollectionTypeиGenericTypeдля передачи методов своему обёртываемому типу (потому что теперь проще узнать, обёртывает ли тип другой тип); - Переименовали
is*()вsatisfy*()и добавили методыCompositeTypeInterface::composedTypesSatisfy()иWrappingTypeInterface::wrappedTypeSatisfy(); - Добавлено множество проверок для предотвращения некорректных конструкций типов.
Теперь мы уверены, что компонент имеет правильную архитектуру и поведение. Поэтому он больше не считается экспериментальным, и можете смело использовать его, зная, что в него не будут вноситься ломающие изменения.