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