函数名称:ReflectionFunctionAbstract::getAttributes()
适用版本:PHP 8.0.0 及更高版本
函数说明:该函数用于获取与函数或方法关联的属性列表。
语法:public ReflectionAttribute[] ReflectionFunctionAbstract::getAttributes( string $name = null , int $flags = 0 )
参数:
- $name(可选):属性名称,可以是完全限定名称或简单名称。
- $flags(可选):用于过滤属性的标志,可以是 ReflectionAttribute::IS_INSTANCEOF 或 ReflectionAttribute::IS_IMPLICIT。
返回值:返回一个 ReflectionAttribute 对象数组,每个对象表示一个属性。
示例:
<?php
#[Attribute]
class CustomAttribute {
public function __construct($value) {
$this->value = $value;
}
}
#[CustomAttribute('example')]
function myFunction() {
// ...
}
$reflectionFunction = new ReflectionFunction('myFunction');
$attributes = $reflectionFunction->getAttributes();
foreach ($attributes as $attribute) {
$attributeName = $attribute->getName();
$attributeArguments = $attribute->getArguments();
echo "Attribute: $attributeName\n";
echo "Arguments: ";
print_r($attributeArguments);
echo "\n";
}
?>
输出结果:
Attribute: CustomAttribute
Arguments: Array
(
[0] => example
)
以上示例中,我们定义了一个名为 CustomAttribute 的自定义属性,并将其应用到 myFunction 函数上。然后,使用 ReflectionFunction 类获取函数的属性,并遍历输出属性名称和参数。
注意:ReflectionFunctionAbstract 是一个抽象类,不能直接实例化,需要使用 ReflectionFunction 或 ReflectionMethod 类来实例化该类。