php获取父类文件路径

时间:2011-05-20 11:30:19

标签: php class parent

示例

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。 下载整个应用程序,然后使用文本搜索是不合理的。

2 个答案:

答案 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();