ReflectionObject vs. cast to array与get_object_vars,用于检索公共变量

时间:2011-09-12 16:14:47

标签: php

我需要获取对象的公共属性;有这样做的首选方法吗?由于Reflection API开销,我担心使用ReflectionObject#getProperties(),但是在将对象转换为数组并使用get_object_vars()之间,是否有一个已建立的标准或明显的性能增益?< / p>

要清楚,我意识到将对象转换为数组将为我提供所有对象的属性,但是受保护的属性将以*为前缀,私有属性将被预先添加使用班级名称,对于快速in_array($property, $properties);通话仍然有效。

2 个答案:

答案 0 :(得分:4)

由于你想获得对象的 public 属性,你绝对应该使用get_object_vars,这是一个专门为该任务设计的函数,而不是使用一些模糊的{{1行为不明确的行为。

答案 1 :(得分:3)

这取决于他们不做同样的事情。

get_object_vars()将仅返回从调用范围可见的变量(例如,它可能会也可能不会返回受保护或私有变量)。

Casting to array返回所有属性,包括私有属性。

相关问题