PHP函数列出所有对象属性

时间:2009-09-03 08:27:20

标签: php attributes

是否有一个函数列出PHP中所有对象的属性(如公共方法和属性),类似于Python的dir()

5 个答案:

答案 0 :(得分:16)

PHP5包含一个完整的Reflection API,用于超越旧的get_class_methodsget_object_vars所能做的事情。

答案 1 :(得分:12)

Reflection::export(new ReflectionObject($Yourobject));

答案 2 :(得分:12)

您可以使用Reflection API的ReflectionClass::getPropertiesReflectionClass::getMethods方法执行此操作(尽管API似乎没有很好地记录)。请注意,PHP反射仅反映编译时信息,而不反映运行时对象。如果您希望运行时对象也包含在查询结果中,最好使用get_object_varsget_class_varsget_class_methods函数。 get_object_varsget_class_vars之间的区别在于前者获取给定对象上的所有变量(包括在运行时动态添加的变量),而后者仅为您提供已在类。

答案 3 :(得分:6)

您可以使用get_object_vars列出对象变量,使用get_class_methods列出给定类的方法。

答案 4 :(得分:0)

如果您想更深入地了解对象的私有变量,可以使用闭包。喜欢:

$sweetsThief = function ($obj) {
  return get_object_vars($obj);
};

$sweetsThief = \Closure::bind($sweetsThief, null, $myobj);

var_dump($sweetsThief($myobj));