(PHP 8 >= 8.3.0)
Cet attribut est utilisé pour indiquer qu'une méthode, une propriété ou une constante de classe (y compris un cas d'énumération) est destinée à surcharger une méthode, une propriété ou une constante de classe d'une classe parente, ou qu'elle implémente une méthode, une propriété ou une constante de classe définie dans une interface.
Si aucune méthode, propriété ou constante de classe portant le même nom n'existe dans une classe parente ou dans une interface implémentée, une erreur de compilation sera émise.
L'attribut ne peut pas être utilisé sur la méthode __construct(), car elle est exclue des vérifications de signature.
| Version | Description |
|---|---|
| 8.6.0 | Override peut désormais être appliqué aux constantes de classe, y compris aux cas d'énumération. |
| 8.5.0 | Override peut désormais être appliqué aux propriétés. |
Exemple #1 Usage avec les méthodes
<?php
class Base {
protected function foo(): void {}
}
final class Extended extends Base {
#[\Override]
protected function boo(): void {}
}
?>Résultat de l'exemple ci-dessus en PHP 8.3 est similaire à :
Fatal error: Extended::boo() has #[\Override] attribute, but no matching parent method exists
Exemple #2 Usage avec les propriétés
<?php
class Base {
protected string $foo;
}
final class Extended extends Base {
#[\Override]
protected string $boo;
}
?>La sortie de l'exemple ci-dessus en PHP 8.5 est similaire à :
Fatal error: Extended::$boo has #[\Override] attribute, but no matching parent property exists
Exemple #3 Usage avec les constantes de classe
<?php
class Base {
protected const FOO = 'foo';
}
final class Extended extends Base {
#[\Override]
protected const BOO = 'boo';
}
?>La sortie de l'exemple ci-dessus en PHP 8.6 est similaire à :
Fatal error: Extended::BOO has #[\Override] attribute, but no matching parent constant exists