get_object_vars() 与强制转换为数组
2022-08-30 12:27:40
和 之间有什么区别吗?get_object_vars($obj)
(array) $obj
两者似乎都返回对象的公共属性。
哪个更好?
和 之间有什么区别吗?get_object_vars($obj)
(array) $obj
两者似乎都返回对象的公共属性。
哪个更好?
事实并非如此。
get_object_vars
对作用域敏感,并且将返回除静态属性之外的所有可见属性,而不考虑它们的可见性。如果你从你的班级之外打电话给它,你只会得到公共成员;从派生类中,您将获得受保护的成员和公共成员;从类本身,您将获得所有成员。数组键表示属性名称,并且不会被破坏。
至少在 PHP 5.3.0 上,强制转换返回所有对象属性,公共属性和其他属性。属性的名称根据其保护级别进行修改:(array)
public
:未损坏,与属性名称相同protected
:属性的键名以*
private
:属性的键名以类名开头有关详细信息,请参阅强制转换为数组。
我希望您能够更好地了解哪一个最适合您的情况。
该功能是实现所需效果的更清晰的方法。尽管将其强制转换为数组也是一种解决方案,但在更高版本的 PHP 中,此行为可能会更改。get_object_vars()
我不知道这两种方法之间是否有实际差异,但上面的参数会导致我使用该函数。