获取函数声明开头的文件名和行号

MC *_*ror 3 php function

可能重复:
如何找出定义函数的位置?
包含php文件知道它的文件名?

我可以在PHP中获取函数声明开头的文件名行号吗?

说,我有以下代码:

 1. /**
 2.  * This function shows the foo bar.
 3.  */
 4. function foo_bar($subject) {
 5.     echo "Foo bar:\n";
 6.     if ($subject == "none") {
 7.         trigger_error("Wrong argument given to 'foo_bar()' in ... on line ....", E_USER_WARNING);
 8.     }
 9.     ...
10. }
Run Code Online (Sandbox Code Playgroud)

当我调用时foo_bar("none"),该函数必须抛出这样的错误:

警告:第4行的/ home/web/mcemperor中的'foo_bar()'参数错误.

我可以检索函数声明的文件名和起始行号吗?

irc*_*ell 12

您正在寻找ReflectionFunction.

$r = new ReflectionFunction('foo_bar');
$file = $r->getFileName();
$startLine = $r->getStartLine();
Run Code Online (Sandbox Code Playgroud)

它就是这么简单......它适用于任何已定义的函数,无论您传递给构造函数参数.