PHP代码中获取定义函数的文件及其位置
昨天在织梦后台排查百度推送401错误的BUG时,需要确定pushBaidu函数定义所在的文件,由于暂时没有拿到FTP账号,需要手动查找该函数的定义位置。结果找了快一个小时没有找到。于是百度出了以下函数,可以定位出函数所在的文件。

该函数用到了ReflectionMechod,该类是PHP5之后新增的,用来获取一个方法的有关信息。


funcion_dump方法代码:
function function_dump($funcname) {
try {
if(is_array($funcname)) {
$func = new ReflectionMethod($funcname[0], $funcname[1]);
$funcname = $funcname[1];
} else {
$func = new ReflectionFunction($funcname);
}
} catch (ReflectionException $e) {
echo $e->getMessage();
return;
}
$start = $func->getStartLine() - 1;
$end = $func->getEndLine() - 1;
$filename = $func->getFileName();
echo "function $funcname defined by $filename($start - $end)\n";
}