(PHP 8)
ReflectionParameter::getAttributes — Renvoie les attributs
Renvoie tous les attributs déclarés sur ce paramètre sous forme d'un tableau de ReflectionAttribute.
name
Filtrer les résultats pour inclure uniquement les instances de ReflectionAttribute pour les attributs correspondant à ce nom de classe.
flags
Flags pour déterminer comment filtrer les résultats, si name
est fourni.
La valeur par défaut est 0
qui ne renverra que les résultats
pour les attributs qui sont de la classe name
.
La seule autre option disponible est d'utiliser ReflectionAttribute::IS_INSTANCEOF
,
qui utilisera plutôt instanceof
pour le filtrage.
Un tableau d'attributs, sous forme d'objet ReflectionAttribute.
Exemple #1 Usage basique
<?php
#[Attribute]
class Fruit {
}
#[Attribute]
class Red {
}
function fruitBasket(
#[Fruit]
#[Red]
string $apple
) { }
$reflection = new ReflectionFunction('fruitBasket');
$parameter = $reflection->getParameter('apple');
$attributes = $parameter->getAttributes();
print_r(array_map(fn($attribute) => $attribute->getName(), $attributes));
?>
L'exemple ci-dessus va afficher :
Array ( [0] => Fruit [1] => Red )
Exemple #2 Résultats filtrés par nom de classe
<?php
#[Attribute]
class Fruit {
}
#[Attribute]
class Red {
}
function fruitBasket(
#[Fruit]
#[Red]
string $apple
) { }
$reflection = new ReflectionFunction('fruitBasket');
$parameter = $reflection->getParameter('apple');
$attributes = $parameter->getAttributes('Fruit');
print_r(array_map(fn($attribute) => $attribute->getName(), $attributes));
?>
L'exemple ci-dessus va afficher :
Array ( [0] => Fruit )
Exemple #3 Résultats filtrés par nom de classe, avec héritage
<?php
interface Color {
}
#[Attribute]
class Fruit {
}
function fruitBasket(
#[Fruit]
#[Red]
string $apple
) { }
$reflection = new ReflectionFunction('fruitBasket');
$parameter = $reflection->getParameter('apple');
$attributes = $parameter->getAttributes('Color', ReflectionAttribute::IS_INSTANCEOF);
print_r(array_map(fn($attribute) => $attribute->getName(), $attributes));
?>
L'exemple ci-dessus va afficher :
Array ( [0] => Red )