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