(PHP 8)
ReflectionFunctionAbstract::getAttributes — Devuelve los atributos
Devuelve todos los atributos declarados en esta función o método en forma de un array de objetos ReflectionAttribute.
name
Filter the results to include only ReflectionAttribute instances for attributes matching this class name.
flags
Flags for determining how to filter the results, if name
is provided.
Default is 0
which will only return results for attributes that
are of the class name
.
The only other option available, is to use ReflectionAttribute::IS_INSTANCEOF
,
which will instead use instanceof
for filtering.
Un array de atributos, en forma de objetos ReflectionAttribute.
Ejemplo #1 Uso básico con un método de clase
<?php
#[Attribute]
class Fruit {
}
#[Attribute]
class Red {
}
class Factory {
#[Fruit]
#[Red]
public function makeApple(): string
{
return 'apple';
}
}
$method = new ReflectionMethod('Factory', 'makeApple');
$attributes = $method->getAttributes();
print_r(array_map(fn($attribute) => $attribute->getName(), $attributes));
?>
El resultado del ejemplo sería:
Array ( [0] => Fruit [1] => Red )
Ejemplo #2 Uso básico con una función
<?php
#[Attribute]
class Fruit {
}
#[Attribute]
class Red {
}
#[Fruit]
#[Red]
function makeApple(): string
{
return 'apple';
}
$function = new ReflectionFunction('makeApple');
$attributes = $function->getAttributes();
print_r(array_map(fn($attribute) => $attribute->getName(), $attributes));
?>
El resultado del ejemplo sería:
Array ( [0] => Fruit [1] => Red )
Ejemplo #3 Resultados filtrados por nombre de clase
<?php
#[Attribute]
class Fruit {
}
#[Attribute]
class Red {
}
#[Fruit]
#[Red]
function makeApple(): string
{
return 'apple';
}
$function = new ReflectionFunction('makeApple');
$attributes = $function->getAttributes('Fruit');
print_r(array_map(fn($attribute) => $attribute->getName(), $attributes));
?>
El resultado del ejemplo sería:
Array ( [0] => Fruit )
Ejemplo #4 Resultados filtrados por nombre de clase, con herencia
<?php
interface Color {
}
#[Attribute]
class Fruit {
}
#[Attribute]
class Red implements Color {
}
#[Fruit]
#[Red]
function makeApple(): string
{
return 'apple';
}
$function = new ReflectionFunction('makeApple');
$attributes = $function->getAttributes('Color', ReflectionAttribute::IS_INSTANCEOF);
print_r(array_map(fn($attribute) => $attribute->getName(), $attributes));
?>
El resultado del ejemplo sería:
Array ( [0] => Red )