我有一个 PHP 属性如下:
#[Attribute(Attribute::TARGET_PROPERTY|Attribute::TARGET_METHOD|Attribute::TARGET_PARAMETER)]
class NotNull implements Constraint{
...
}
现在,我想获取属性反射的所有属性的列表并检查它们是否是约束的实例:
$propertyReflection = ...;
$attributes = $propertyReflection->getAttributes();
foreach($attributes as $attribute){
if($attribute instanceof Constraint){
// do something
}
}
然而,它什么都不做?
所以,我的问题是:是否可以实现一个带有属性的接口,然后检查该属性是否是一个实例?
这是一个完整的代码:
$reflection = new ReflectionClass($type);
$properties = $reflection->getProperties();
foreach ($properties as $property) {
$attributes = $property->getAttributes();
foreach ($attributes as $attribute) {
if (attribute instanceof Constraint)) {
// do something
}
}
}