Атрибут ReturnTypeWillChange

(PHP 8 >= 8.1.0)

Введение

При переопределении большей части неокончательных методов внутренних классов теперь потребуется указать совместимый тип возвращаемого значения, иначе при проверке наследования PHP выдаст предупреждение об устаревании сигнатуры, которая нарушает правила ковариантности. С PHP 8.1.0 начался предварительный этап перехода к типизации значений, которые возвращаются методами внутренних классов: проверка совместимости типов возврата продолжится в мягком режиме, прежде чем в будущей версии языка введут строгую проверку, и вместо предупреждений движок начнёт выдавать критическую ошибку. Для подавления предупреждения при переопределении метод размечают атрибутом #[\ReturnTypeWillChange], если из-за несовместимости между версиями PHP невозможно объявить тип возвращаемого значения или переопределение метода содержит несовместимый тип.

Внимание

В переопределениях методов пользовательских классов типы возвращаемых значений проверяются в строгом режиме, и при несовместимости сигнатур выдаётся критическая ошибка, даже если в производном классе метод разметили атрибутом. Атрибут ReturnTypeWillChange продолжит подавлять предупреждения об устаревании только в течение фазы объявления предварительных типов возврата. После введения строгой проверки типов атрибут перестанет работать, поскольку при несовпадении сигнатуры метода в наследнике внутреннего класса PHP начнёт выдавать критическую ошибку.

Обзор класса

#[\Attribute]
final class ReturnTypeWillChange {
/* Методы */
public function __construct()
}

Смотрите также

Введение в атрибуты

Содержание