示例
index.php //我知道这个文件在哪里
$class = new childclass();
$class->__initComponents();
somefile.php //我知道这个文件在哪里
Class childclass extends parentclass {
}
someparentfile.php //我不知道这个文件在哪里
Class parentclass {
function __initComponents(){
//does something
}
}
我需要找出someparentfile.php的位置。
理由:
我正在调试其他人写的一些困难的PHP代码,我需要找出哪个文件包含定义类参数的代码。
我发现它就像调用函数的类方法一样:
$class->__initComponents();//the parameter is defined somewhere in there
问题是这个函数在上面的$ class的父类“MyClass”中,我不知道父类在哪里。
是否有一种方法或一些调试功能,通过它我可以找到这个父类的位置或至少在定义参数的位置?
P.S。 下载整个应用程序,然后使用文本搜索是不合理的。
答案 0 :(得分:10)
您可以使用反射
$object = new ReflectionObject($class);
$method = $object->getMethod('__initComponents');
$declaringClass = $method->getDeclaringClass();
$filename = $declaringClass->getFilename();
有关Reflection-API的更多信息,请参阅the manual
但是,为了简单起见,我建议下载源代码并在本地调试。
答案 1 :(得分:3)
$object = new ReflectionObject($this); // Replace $this with object of any class.
echo 'Parent Class Name: <br>';
echo $object->getParentClass()->getName();
echo '<br>Parent Class Location: <br>';
echo $object->getParentClass()->getFileName();