是否有一个函数列出PHP中所有对象的属性(如公共方法和属性),类似于Python的dir()
?
答案 0 :(得分:16)
PHP5包含一个完整的Reflection API,用于超越旧的get_class_methods和get_object_vars所能做的事情。
答案 1 :(得分:12)
Reflection::export(new ReflectionObject($Yourobject));
答案 2 :(得分:12)
您可以使用Reflection API的ReflectionClass::getProperties
和ReflectionClass::getMethods
方法执行此操作(尽管API似乎没有很好地记录)。请注意,PHP反射仅反映编译时信息,而不反映运行时对象。如果您希望运行时对象也包含在查询结果中,最好使用get_object_vars
,get_class_vars
和get_class_methods
函数。 get_object_vars
和get_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));