我想知道(通过编程,可能通过反射API)定义了某个PHP函数。
答案 0 :(得分:5)
ReflectionFunction
课程中的内容看似相关(getFileName
,getStartLine
等)。
(未测试的)
答案 1 :(得分:1)
debug_backtrace()
将返回一个包含所有调用的数组,以及函数/方法的定义。反射类将为您提供函数的定义。
e.g。我使用它来记录旧项目中的已删除功能:
function logDeprecated() {
$trail = debug_backtrace();
if ($trail[1]['type']) {
$function = new ReflectionMethod($trail[1]['class'], $trail[1]['function']);
} else {
$function = new ReflectionFunction($trail[1]['function']);
}
$errorMsg = 'Function ' . $trail[1]['function'];
if ($trail[1]['class']) {
$errorMsg .= ' of class ' . $trail[1]['class'];
}
$errorMsg .= ' is deprecated (called from ' . $trail[1]['file'] . '#' . $trail[1]['line'] . ', defined in ' . $function->getFileName() . '#' . $function->getStartLine() . ')';
return $errorMsg;
}
答案 2 :(得分:1)
ReflectionMethod::getStartLine()
ReflectionMethod::getFileName()
ReflectionFunction::getStartLine()
ReflectionFunction::getFileName()
答案 3 :(得分:0)
可能它不是最佳解决方案,但如果你找不到任何东西,你可以使用grep
命令找到函数位置,如果你使用的是linux。
exec('grep -irn "yourFunctionName" ./library', $response);
foreach ($response as $file) {
list($filename, $line) = explode(":", $file);
}