Attribut sans classe
<?php
#[Attribute]
class y {
function foo() { return __METHOD__; }
}
#[X, Y]
function f() { }
$ref = new \ReflectionFunction('\f');
try {
if ($ref->getAttributes()[0]->getName() === 'X') {
print 'Look mom! No hands' . PHP_EOL;
}
if ($ref->getAttributes()[1]->getName() === 'Y') {
print $ref->getAttributes()[1]->newInstance()->foo();
}
} catch (\Error $e) {
# other errors
var_dump($e->getMessage());
}
?>
PHP 8.0 dispose d’une fonctionnalité d’attributs, où des options supplémentaires peuvent être attachées à diverses structures. L’option est définie sous forme de classe, et est accessible via l’API Reflection et la méthode getAttribute().
La classe d’attribut n’est pas strictement nécessaire. Tant que l’attribut n’est pas instancié, il est possible de se reposer uniquement sur le nom de l’attribut pour gérer des comportements spécifiques.
See Also
PHP Features
Last updated: 11 October 2026