(PHP 8)
ReflectionClass::getAttributes — Recupera los atributos de una clase
Devuelve todos los atributos declarados en esta clase en forma de un array de objetos ReflectionAttribute.
nameFiltrar los resultados para incluir únicamente las instancias de ReflectionAttribute para los atributos correspondientes a este nombre de clase.
flags
Flags para determinar cómo filtrar los resultados, si name es proporcionado.
El valor por omisión es 0 que solo retornará los resultados
para los atributos que son de la clase name.
La única otra opción disponible es utilizar ReflectionAttribute::IS_INSTANCEOF,
que utilizará instanceof para el filtrado.
Un array de atributos, en forma de objetos de tipo ReflectionAttribute.
Ejemplo #1 Uso básico 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));
?>El ejemplo anterior mostrará :
Array
(
[0] => Fruit
[1] => Rouge
)
Ejemplo #2 Filtrar los resultados por un nombre de clase
<?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));
?>El ejemplo anterior mostrará :
Array
(
[0] => Fruit
)
Ejemplo #3 Filtrar los resultados por nombre de clase, con herencia
<?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));
?>El ejemplo anterior mostrará :
Array
(
[0] => Rouge
)