Новое в Symfony 7.2: Переработан компонент TypeInfo
TypeInfo
и улучшена его стабильность.- Pull Request: [TypeInfo] Redesign Type methods and nullability #57630 Mathias Arlaud
- Pull Request: [TypeInfo] Remove
@experimental
tag #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()
; - Добавлено множество проверок для предотвращения некорректных конструкций типов.
Теперь мы уверены, что компонент имеет правильную архитектуру и поведение. Поэтому он больше не считается экспериментальным, и можете смело использовать его, зная, что в него не будут вноситься ломающие изменения.