«Если рабочий хочет хорошо выполнять свою работу, он должен сначала заточить свои инструменты» — Конфуций, «Аналитики Конфуция. Лу Лингун»
титульная страница > программирование > Как обрабатывать конфликты возвращаемых типов в PHP 8.1?

Как обрабатывать конфликты возвращаемых типов в PHP 8.1?

Опубликовано 17 ноября 2024 г.
Просматривать:299

How to Handle Return Type Conflicts in PHP 8.1?

Ссылка: Конфликт возвращаемых типов и #[\ReturnTypeWillChange] Атрибут

Контекст:
В 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.

Что делать:

  1. Определите метод, упомянутый в уведомление об устаревании и ожидаемый тип возвращаемого значения.
  2. Если возможно, измените тип возвращаемого значения метода так, чтобы он соответствовал ожидаемому типу.
  3. При необходимости временно отключите уведомление об устаревании, добавив #[ Атрибут \ReturnTypeWillChange].

Примечание: Принудительные типы возврата, скорее всего, появятся в PHP 9.0, поэтому планируйте соответствующим образом обращаться к атрибутам #[\ReturnTypeWillChange].

Последний учебник Более>

Изучайте китайский

Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.

Copyright© 2022 湘ICP备2022001581号-3