如何找出定义函数的位置?

Sal*_*ake 107 php

如何找出定义给定函数的文件和行?

Tom*_*igh 223

您也可以在PHP本身中执行此操作:

$reflFunc = new ReflectionFunction('function_name');
print $reflFunc->getFileName() . ':' . $reflFunc->getStartLine();
Run Code Online (Sandbox Code Playgroud)

  • 对于Class方法,您可以使用`$ reflFunc = new ReflectionMethod($ this,'method_name');` (11认同)
  • 提示:`$ reflFunc-> isInternal()=== TRUE`表示 - > getFileName()和 - > getStartLine()将返回FALSE. (8认同)
  • 使用PHP而不是IDE解决此问题的+1.好主意. (7认同)
  • @EHerman你可以查看debug_backtrace()来查找调用函数的位置. (3认同)
  • @EHerman我认为你不能找到具有反射功能的调用者.如果你可能它可能不会很好地工作,因为PHP文件往往是按需包含,所以你可能没有加载所有代码调用该函数. (2认同)

Joh*_*nco 12

要么使用允许这样做的IDE(我会推荐Eclipse PDT),要么在Linux上或使用wingrep时你总是可以使用它.在Linux中它将是这样的:

grep -R "function funName" *
Run Code Online (Sandbox Code Playgroud)

从项目的根文件夹中.

  • 最好:grep -R"function\sfunName"* (5认同)

ken*_*orb 6

我喜欢 Tom 的解决方案,所以我想我可以与ReflectionFunction分享更多技巧(它应该适用于每个 PHP 5):

请注意,它不会显示内部函数的位置(例如_),但它仍然可以打印其 API,如下所示。