(PHP 8 >= 8.3.0)
Este atributo é usado para indicar que um método ou uma propriedade se destina a substituir um método ou uma propriedade de uma classe superior ou que ele/ela implementa um método ou propriedade definido(a) em uma interface.
Se nenhum método ou propriedade com o mesmo nome existir em uma classe superior ou em uma interface implementada, um erro será emitido no momento da compilação.
O atributo não pode ser usado no método __construct(), que é isento de verificação de assinaturas.
Versão | Descrição |
---|---|
8.5.0 | Override pode ser aplicada a propriedades. |
Exemplo #1 Uso com métodos
<?php
class Base {
protected function foo(): void {}
}
final class Extended extends Base {
#[\Override]
protected function boo(): void {}
}
?>
A saída do exemplo acima no PHP 8.3 é semelhante a:
Fatal error: Extended::boo() has #[\Override] attribute, but no matching parent method exists
Exemplo #2 Uso com propriedades
<?php
class Base {
protected string $foo;
}
final class Extended extends Base {
#[\Override]
protected string $boo;
}
?>
A saída do exemplo acima no PHP 8.5 é semelhante a:
Fatal error: Extended::$boo has #[\Override] attribute, but no matching parent property exists