(PHP 8)
ReflectionParameter::getAttributes — Devuelve los atributos
Devuelve todos los atributos declarados en este parámetro en forma de un array de objetos ReflectionAttribute.
name
Filtrar 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 ReflectionAttribute.
Ejemplo #1 Uso básico
<?php
#[Attribute]
class Fruit {
}
#[Attribute]
class Red {
}
function fruitBasket(
#[Fruit]
#[Red]
string $apple
) { }
$reflection = new ReflectionFunction('fruitBasket');
$parameter = $reflection->getParameters()[0];
$attributes = $parameter->getAttributes();
print_r(array_map(fn($attribute) => $attribute->getName(), $attributes));
?>
El ejemplo anterior mostrará :
Array ( [0] => Fruit [1] => Red )
Ejemplo #2 Resultados filtrados por nombre de clase
<?php
#[Attribute]
class Fruit {
}
#[Attribute]
class Red {
}
function fruitBasket(
#[Fruit]
#[Red]
string $apple
) { }
$reflection = new ReflectionFunction('fruitBasket');
$parameter = $reflection->getParameters()[0];
$attributes = $parameter->getAttributes('Fruit');
print_r(array_map(fn($attribute) => $attribute->getName(), $attributes));
?>
El ejemplo anterior mostrará :
Array ( [0] => Fruit )
Ejemplo #3 Resultados filtrados por nombre de clase, con herencia
<?php
interface Color {
}
#[Attribute]
class Fruit {
}
#[Attribute]
class Red implements Color {
}
function fruitBasket(
#[Fruit]
#[Red]
string $apple
) { }
$reflection = new ReflectionFunction('fruitBasket');
$parameter = $reflection->getParameters()[0];
$attributes = $parameter->getAttributes('Color', ReflectionAttribute::IS_INSTANCEOF);
print_r(array_map(fn($attribute) => $attribute->getName(), $attributes));
?>
El ejemplo anterior mostrará :
Array ( [0] => Red )