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

时间:2011-11-02 14:23:40

标签: php function

  

可能重复:
  How to find out where a function is defined?
  included php file to know it's file name?

我可以在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. }

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

  

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

我可以检索函数声明开头的文件名行号吗?

3 个答案:

答案 0 :(得分:12)

您正在寻找ReflectionFunction

$r = new ReflectionFunction('foo_bar');
$file = $r->getFileName();
$startLine = $r->getStartLine();

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

答案 1 :(得分:0)

$backtrace = debug_backtrace();
$line = $backtrace[0]['line'];
$file = $backtrace[0]['file'];

http://www.php.net/manual/en/function.debug-backtrace.php

答案 2 :(得分:0)

可以使用PHP异常找到函数名称,这对于错误触发更有意义:http://www.php.net/manual/en/exception.gettrace.php