PHP 8.1.31 Released!

ReflectionClassConstant::getAttributes

(PHP 8)

ReflectionClassConstant::getAttributesVérifie les attributs

Description

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

Vérifie tous les attributs déclarés sur cette constante de classe sous 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 forme d'objets ReflectionAttribute.

Exemples

Exemple #1 Utilisation simple

<?php
#[Attribute]
class
Fruit {
}

#[
Attribute]
class
Red {
}

class
Basket {
#[
Fruit]
#[
Red]
public const
APPLE = 'apple';
}

$classConstant = new ReflectionClassConstant('Basket', 'APPLE');
$attributes = $classConstant->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 {
}

class
Basket {
#[
Fruit]
#[
Red]
public const
APPLE = 'apple';
}

$classConstant = new ReflectionClassConstant('Basket', 'APPLE');
$attributes = $classConstant->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 {
}

#[
Attribute]
class
Red implements Color {
}

class
Basket {
#[
Fruit]
#[
Red]
public const
APPLE = 'apple';
}

$classConstant = new ReflectionClassConstant('Basket', 'APPLE');
$attributes = $classConstant->getAttributes('Color', ReflectionAttribute::IS_INSTANCEOF);
print_r(array_map(fn($attribute) => $attribute->getName(), $attributes));
?>

L'exemple ci-dessus va afficher :

Array
(
    [0] => Red
)

Voir aussi

add a note

User Contributed Notes

There are no user contributed notes for this page.
To Top