Контекст:
В PHP 8.1 указание типов возвращаемых значений для методы становятся более распространенными, что приводит к конфликтам с существующими реализациями.
Проблема:
Когда тип возвращаемого значения метода изменяется с совместимого типа на несовместимый тип или не указан, следующее устаревает. появляется уведомление:
Deprecated: Return type of [Method Name] should either be compatible with ..., or the #[\ReturnTypeWillChange] attribute should be used...
Последствия ковариации типов возвращаемых данных:
В PHP 7.0 появились типы возвращаемых значений, гарантирующие единообразное поведение при вызове кода на основе указанного контракта. Классы расширения или реализации должны поддерживать одинаковые или более конкретные типы возвращаемых значений.
История прекращения поддержки:
С добавлением типов объединения в PHP 8.0 внутренние функции и методы получили тип возвращаемого значения. спецификации. Однако принудительное применение этих типов нарушит обратную совместимость. Вместо этого для предварительных изменений было введено уведомление об устаревании.
Назначение атрибута #[\ReturnTypeWillChange]:
Этот атрибут указывает на запланированное изменение типа возвращаемого значения. PHP 8.1 игнорирует уведомление об устаревании методов, отмеченных этим атрибутом, что позволяет поддерживать более старые версии PHP.
Что делать:
Примечание: Принудительные типы возврата, скорее всего, появятся в PHP 9.0, поэтому планируйте соответствующим образом обращаться к атрибутам #[\ReturnTypeWillChange].
Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.
Copyright© 2022 湘ICP备2022001581号-3