(PHP 8)
ReflectionClass::getAttributes — 获取所有属性
返回类中声明的所有属性,类型是由 ReflectionAttribute 组成的 array。
name
过滤结果,匹配此类名,仅包含 ReflectionAttribute 实例的属性。
flags
如果提供了 name
,则用于确定如何过滤结果的 flag。
默认值为 0
,这将导致返回的结果只属于类 name
的属性。
唯一可用的其他选项是使用 ReflectionAttribute::IS_INSTANCEOF
,它将改为使用 instanceof
进行过滤。
由 ReflectionAttribute 对象组成的属性数组。
示例 #1 基础用法
<?php
#[Attribute]
class Fruit {
}
#[Attribute]
class Red {
}
#[Fruit]
#[Red]
class Apple {
}
$class = new ReflectionClass('Apple');
$attributes = $class->getAttributes();
print_r(array_map(fn($attribute) => $attribute->getName(), $attributes));
?>
以上示例会输出:
Array ( [0] => Fruit [1] => Red )
示例 #2 通过类名过滤结果
<?php
#[Attribute]
class Fruit {
}
#[Attribute]
class Red {
}
#[Fruit]
#[Red]
class Apple {
}
$class = new ReflectionClass('Apple');
$attributes = $class->getAttributes('Fruit');
print_r(array_map(fn($attribute) => $attribute->getName(), $attributes));
?>
以上示例会输出:
Array ( [0] => Fruit )
示例 #3 通过类名和继承过滤结果
<?php
interface Color {
}
#[Attribute]
class Fruit {
}
#[Attribute]
class Red implements Color {
}
#[Fruit]
#[Red]
class Apple {
}
$class = new ReflectionClass('Apple');
$attributes = $class->getAttributes(Color::class, ReflectionAttribute::IS_INSTANCEOF);
print_r(array_map(fn($attribute) => $attribute->getName(), $attributes));
?>
以上示例会输出:
Array ( [0] => Red )