(PHP 8)
ReflectionProperty::getAttributes — Devuelve los atributos
Devuelve todos los atributos declarados en esta propiedad de clase 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 {
}
class Basket {
#[Fruit]
#[Red]
public string $apple = 'apple';
}
$property = new ReflectionProperty('Basket', 'apple');
$attributes = $property->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 {
}
class Basket {
#[Fruit]
#[Red]
public string $apple = 'apple';
}
$property = new ReflectionProperty('Basket', 'apple');
$attributes = $property->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 {
}
class Basket {
#[Fruit]
#[Red]
public string $apple = 'apple';
}
$property = new ReflectionProperty('Basket', 'apple');
$attributes = $property->getAttributes('Color', ReflectionAttribute::IS_INSTANCEOF);
print_r(array_map(fn($attribute) => $attribute->getName(), $attributes));
?>
El ejemplo anterior mostrará :
Array ( [0] => Red )