CakeFest 2025 Madrid: The Official CakePHP Conference

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.

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