Keyboard shortcuts

Press ← or → to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Un enfant d’attribut n’est pas un attribut

<?php

#[Attribute]
class x {}

class y extends x {}

$ref = new \ReflectionFunction(#[x, y] function () { });

try {
    $ref->getAttributes()[0]->newInstance();
    $ref->getAttributes()[1]->newInstance();
} catch (\Error $e) {
    var_dump('Error : ', $e->getMessage());
}

?>

Un attribut de classe doit être marqué avec un attribut appelé Attribute. C’est obligatoire pour utiliser la Réflexion et obtenir une instance de l’attribut.

Cet attribut ne concerne que la classe elle-même, et il ne se propage pas automatiquement aux classes enfants.

D’un autre côté, la classe Attribute ne peut pas être étendue : il n’est pas possible de créer un enfant qui pourrait hériter de certaines propriétés de Attribute.

See Also

PHP Features

Last updated: 11 October 2026