(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
)