如何获取 php 8 中具有某个属性的所有类?

问题描述 投票:0回答:1

我有几个具有特定属性的类,如何获取所有具有该属性的类?

#[MyAttribute]
class Foo
{
}

#[MyAttribute]
class Bar
{
}

有一些想法吗?

php attributes php-8
1个回答
0
投票

通过反射你可以做到。

首先使用

get_declared_classes()
获取所有声明的类。然后你就可以在每堂课上打
ReflectionClass
。然后检查
ReflectionClass
是否具有该属性。

$allClasses = get_declared_classes();

foreach ($allClasses as $className) {
    $reflectionClass = new ReflectionClass($className);
    $attributes = $reflectionClass->getAttributes();

    foreach ($attributes as $attribute) {
        if ($attribute->getName() === $attributeName) {
            $classesWithAttribute[] = $className;
            break;
        }
    }
}

© www.soinside.com 2019 - 2024. All rights reserved.