La classe Override

(PHP 8 >= 8.3.0)

Introduction

Cet attribut est utilisé pour indiquer qu'une méthode est destinée à surcharger une méthode d'une classe parente ou qu'elle implémente une méthode définie dans une interface.

Si aucune méthode 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 être utilisé que la méthode __construct(), qui est exclue des vérifications de signature.

Synopsis de la classe

final class Override {
/* Méthodes */
public __construct()
}

Exemples

<?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

Sommaire

add a note

User Contributed Notes 1 note

up
0
alxrie at gmail dot com
16 days ago
The magic method __construct() can't be marked with Override attribute.

For example:

class Base {
public $val;
public function __construct() {
$this->val = 0;
}
}

class Derived extends Base {
#[\Override]
public function __construct() {
parent::__construct();
++$this->val;
}
}

In PHP 8.3 this example raises an error message

Fatal error: Derived::__construct() has #[\Override] attribute, but no matching parent method exists
To Top