Введение
PHP Manual
PHP Manual»Предопределённые атрибуты»Override

Атрибут Override

(PHP 8 >= 8.3.0)

Атрибут указывает, что метод или свойство переопределяет метод или свойство родительского класса или реализует метод или свойство, которые определили в интерфейсе.

PHP выдаст ошибку времени компиляции, если в родительском классе или реализуемом интерфейсе не определили метод или свойство с таким же названием.

Атрибут нельзя нацеливать на метод __construct(), поскольку PHP не проверяет совместимость сигнатур конструкторов при наследовании.

#[\Attribute]
final class Override {
/* Методы */
public function __construct()
}
Версия Описание
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

Содержание

To Top