我有一类具有公共(public),公共(public)静态,私有(private)和私有(private)静态属性的类,而我试图仅获取公共(public)属性。我尝试由于某种原因无法正确使用过滤器,
ReflectionProperty::IS_PUBLIC & ~ReflectionProperty::IS_STATIC
或者
ReflectionProperty::IS_PUBLIC & (ReflectionProperty::IS_PUBLIC | ~ReflectionProperty::IS_STATIC)
除其他事项外,要么我一直获得静态公共(public)资源,要么就获得私有(private)静态资源。
最佳答案
您将需要查询所有公共(public)对象,然后像这样过滤掉公共(public)静态对象:
$ro = new ReflectionObject($obj);
$publics = array_filter(
$ro->getProperties(ReflectionProperty::IS_PUBLIC),
function(ReflectionProperty $prop) {
return !$prop->isStatic();
}
);