查询

ReflectionParameter::getAttributes()函数—用法及示例

「 获取参数的属性 」


函数:ReflectionParameter::getAttributes()

适用版本:PHP 8.0.0及以上

用法:ReflectionParameter::getAttributes()方法用于获取参数的属性。

参数:无

返回值:一个ReflectionAttribute对象的数组,每个对象表示参数的一个属性。

示例:

class MyClass {
    public function myMethod(#[Attribute1] $param1, #[Attribute2('value')] $param2) {
        // ...
    }
}

$reflectionClass = new ReflectionClass('MyClass');
$reflectionMethod = $reflectionClass->getMethod('myMethod');

// 获取第一个参数的属性
$param1 = $reflectionMethod->getParameters()[0];
$attributes1 = $param1->getAttributes();
foreach ($attributes1 as $attribute) {
    $attributeName = $attribute->getName();
    $attributeArguments = $attribute->getArguments();
    echo "Attribute name: $attributeName\n";
    echo "Attribute arguments: ";
    print_r($attributeArguments);
}

// 获取第二个参数的属性
$param2 = $reflectionMethod->getParameters()[1];
$attributes2 = $param2->getAttributes();
foreach ($attributes2 as $attribute) {
    $attributeName = $attribute->getName();
    $attributeArguments = $attribute->getArguments();
    echo "Attribute name: $attributeName\n";
    echo "Attribute arguments: ";
    print_r($attributeArguments);
}

输出:

Attribute name: Attribute1
Attribute arguments: Array
(
)

Attribute name: Attribute2
Attribute arguments: Array
(
    [0] => value
)

以上示例中,我们定义了一个类MyClass,其中有一个方法myMethod,该方法有两个带有属性的参数。我们使用ReflectionClassReflectionMethod来获取方法的反射,并使用getParameters()方法获取方法的参数反射。然后,我们使用getAttributes()方法获取每个参数的属性反射,并遍历输出每个属性的名称和参数。在这个示例中,第一个参数没有传递任何参数,而第二个参数传递了一个参数值为valueAttribute2属性。

补充纠错
热门PHP函数
分享链接