ReflectionClass::getAttributes

(PHP 8)

ReflectionClass::getAttributesRécupère les attributs d'une classe

Description

publicReflectionClass::getAttributes(?string$name = null, int$flags = 0): array

Retourne tous les attributs déclarés sur cette classe sous la forme d'un tableau de ReflectionAttribute.

Liste de paramètres

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.

Valeurs de retour

Un tableau d'attributs, sous la forme d'objets de type ReflectionAttribute.

Exemples

Exemple #1 Utilisation basique de ReflectionClass::getAttributes()

<?php
#[Attribute]
class
Fruit {
}

#[
Attribute]
class
Rouge {
}

#[
Fruit]
#[
Rouge]
class
Pomme {
}

$class = new ReflectionClass('Pomme');
$attributes = $class->getAttributes();
print_r(array_map(fn($attribute) => $attribute->getName(), $attributes));
?>

L'exemple ci-dessus va afficher :

Array ( [0] => Fruit [1] => Rouge )

Exemple #2 Filtrer les résultats par un nom de classe

<?php
#[Attribute]
class
Fruit {
}

#[
Attribute]
class
Rouge {
}

#[
Fruit]
#[
Rouge]
class
Pomme {
}

$class = new ReflectionClass('Pomme');
$attributes = $class->getAttributes('Fruit');
print_r(array_map(fn($attribute) => $attribute->getName(), $attributes));
?>

L'exemple ci-dessus va afficher :

Array ( [0] => Fruit )

Exemple #3 Filtrer les résultats par nom de classe, avec héritage

<?php
interface Couleur {
}

#[
Attribute]
class
Fruit {
}

#[
Attribute]
class
Rouge implements Couleur {
}

#[
Fruit]
#[
Rouge]
class
Pomme {
}

$class = new ReflectionClass('Pomme');
$attributes = $class->getAttributes(Couleur::class, ReflectionAttribute::IS_INSTANCEOF);
print_r(array_map(fn($attribute) => $attribute->getName(), $attributes));
?>

L'exemple ci-dessus va afficher :

Array ( [0] => Rouge )
To Top