(PHP 8 >= 8.3.0)
Атрибут указывает, что метод или свойство переопределяет метод или свойство родительского класса или реализует метод или свойство, которые определили в интерфейсе.
PHP выдаст ошибку времени компиляции, если в родительском классе или реализуемом интерфейсе не определили метод или свойство с таким же названием.
Атрибут нельзя нацеливать на метод __construct(), поскольку PHP не проверяет совместимость сигнатур конструкторов при наследовании.
Версия | Описание |
---|---|
8.5.0 | Атрибут Override теперь работает со свойствам. |
Пример #1 Нацеливание на методы
<?php
class Base
{
protected function foo(): void {}
}
final class Extended extends Base
{
#[\Override]
protected function boo(): void {}
}
?>
Результат выполнения приведённого примера в PHP 8.3 аналогичен:
Fatal error: Extended::boo() has #[\Override] attribute, but no matching parent method exists
Пример #2 Нацеливание на свойства
<?php
class Base
{
protected string $foo;
}
final class Extended extends Base
{
#[\Override]
protected string $boo;
}
?>
Результат выполнения приведённого примера в PHP 8.5 аналогичен:
Fatal error: Extended::$boo has #[\Override] attribute, but no matching parent property exists