我需要获取对象的公共属性;有这样做的首选方法吗?由于Reflection API开销,我担心使用ReflectionObject#getProperties()
,但是在将对象转换为数组并使用get_object_vars()
之间,是否有一个已建立的标准或明显的性能增益?< / p>
要清楚,我意识到将对象转换为数组将为我提供所有对象的属性,但是受保护的属性将以*
为前缀,私有属性将被预先添加使用班级名称,对于快速in_array($property, $properties);
通话仍然有效。
答案 0 :(得分:4)
由于你想获得对象的 public 属性,你绝对应该使用get_object_vars
,这是一个专门为该任务设计的函数,而不是使用一些模糊的{{1行为不明确的行为。
答案 1 :(得分:3)
这取决于他们不做同样的事情。
get_object_vars()将仅返回从调用范围可见的变量(例如,它可能会也可能不会返回受保护或私有变量)。
Casting to array返回所有属性,包括私有属性。