La classe Override

(PHP 8 >= 8.3.0)

Introduction

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.

Synopsis de la classe

/* Méthodes */
public function __construct()
}

Historique

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.

Exemples

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

Sommaire

+add a note

User Contributed Notes

There are no user contributed notes for this page.