1

可能重复:
如何找出函数的定义位置?

我有一个相当复杂的 OOP PHP 项目,其中有很多类、库和帮助程序可供使用。

在调试时,我有时会发现当某个特定函数的实例存在于不同的文件或类中时,我很难找到它在哪个实例中使用,并且如果不查看整个代码,我就无法判断包含了哪个类或库。

我想知道是否有语言构造、函数甚至外部工具(例如调试器)可以帮助我准确定位特定函数位于哪个文件和哪一行。

例如:

moditem(25); // How I call the function usually
echo locate_function('moditem');

显示如下内容:

Function moditem() is located in file: lib/users.php, line 234.

这是一个片段:

...
return TRUE;
}

function moditem($id){
    $modify = $this->modify($id);
    return $modify;
}
...

我的 IDE 有一种方法可以引导我进行函数声明,但是当我有 20 个文件具有不同版本的同名函数时,它会感到困惑。

4

2 回答 2

13
$ref = new ReflectionFunction('moditem');
echo $ref->getFileName();

参见http://php.net/reflectionfunction和类似的相关反射方法。

于 2012-07-17T13:22:30.713 回答
0

通常在 IDE 中,您可以按CTRL+ CLICK,它会带您进入函数声明。

或者,如果您只想要调试输出,您可以在函数中执行此操作:

echo __FILE__ . ":" . __LINE__;

这是有关魔术常量的文档

于 2012-07-17T13:22:06.203 回答