ReflectionClass::getAttributes

(PHP 8)

ReflectionClass::getAttributesGets Attributes

Descripción

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

Returns all attributes declared on this class as an array of ReflectionAttribute.

Advertencia

Esta función no está documentada actualmente, solamente se encuentra disponible la lista de parámetros.

Parámetros

name

flags

Valores devueltos

Array of attributes, as a ReflectionAttribute object.

add a note add a note

User Contributed Notes 2 notes

up
2
sergiolibe at gmail dot com
6 months ago
When using getAttributes() with specific attribute class and flags, flag 0 will return just matching attributes with specified class, and 2 will return matching attributes with specified class and children of that class:
<?php
   
#[Attribute(\Attribute::TARGET_CLASS)]
   
class SomeAttribute {}

   
#[Attribute(\Attribute::TARGET_CLASS)]
   
class ChildAttribute extends SomeAttribute {}

   
#[SomeAttribute]
    #[SomeChildAttribute]
   
class SomeClass {}

   
$rc = new ReflectionClass(SomeClass::class);

   
$r_atts = $rc->getAttributes(SomeAttribute::class, 0); // 0 is default, just given class
   
echo json_encode(array_map(fn(ReflectionAttribute $r_att) => $r_att->getName(), $r_atts)), PHP_EOL;

   
$r_atts = $rc->getAttributes(SomeAttribute::class, 2); // given class and children classes
   
echo json_encode(array_map(fn(ReflectionAttribute $r_att) => $r_att->getName(), $r_atts)), PHP_EOL;
?>

output:
["SomeAttribute"]
["SomeAttribute","ChildAttribute"]
up
0
sandrenyl at gmail dot com
1 month ago
When using the method getAttributes() to fetch attributes based on a parent class, the proper flag constant is ReflectionAttribute::IS_INSTANCEOF (which equals 2 as mentionned by sergiolibe).

<?php
$reflectionClass
->getAttributes(SomeParentAttribute::class, ReflectionAttribute::IS_INSTANCEOF);
?>
To Top