ReflectionClass::getAttributes

(PHP 8)

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

Description

public function ReflectionClass::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
)

Voir aussi