我有几个具有特定属性的类,如何获取所有具有该属性的类?
#[MyAttribute]
class Foo
{
}
#[MyAttribute]
class Bar
{
}
有一些想法吗?
通过反射你可以做到。
首先使用
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;
}
}
}