在PHP中获取被调用函数列表
在PHP中,在PHP中获取被调用函数列表,php,Php,在PHP中,get_included_files()返回包含文件名的数组 以类似的方式,是否有任何方法可以获得一个包含被调用函数名和参数的数组 这样,是否有任何方法可以获得一个数组,其中包含被调用函数的名称和参数 没有 您可以做的是显示所有函数调用(带有参数),这些函数调用将导致执行您正在从中执行回溯的行(“调用堆栈”),但这与脚本中调用的所有函数不同 你想做什么?也许有不同的方法。我不知道 但是,您可以使用来获取当前活动的函数/方法层次结构。我认为没有办法实现您想要的功能。对不起 我能得到的最
get_included_files()
返回包含文件名的数组
以类似的方式,是否有任何方法可以获得一个包含被调用函数名和参数的数组
这样,是否有任何方法可以获得一个数组,其中包含被调用函数的名称和参数
没有
您可以做的是显示所有函数调用(带有参数),这些函数调用将导致执行您正在从中执行回溯的行(“调用堆栈”),但这与脚本中调用的所有函数不同
你想做什么?也许有不同的方法。我不知道
但是,您可以使用来获取当前活动的函数/方法层次结构。我认为没有办法实现您想要的功能。对不起 我能得到的最接近的函数是函数,它将告诉您是否已加载特定函数
你到底想在这里实现什么?我看不到一个需要可用函数列表的用例(在php_info()类型屏幕之外)。我试图实现您想要的结果,最终找到了一个合理的解决方案 创建一个名为
Debug
的类,并在每个要调试的文件上方包含该类。自己构建一个函数,可以很好地打印存储在$calls
中的信息
class Debug {
private static $calls;
public static function log($message = null)
{
if(!is_array(self::$calls))
self::$calls = array();
$call = debug_backtrace(false);
$call = (isset($call[1]))?$call[1]:$call[0];
$call['message'] = $message;
array_push(self::$calls, $call);
}
}
每次在functionbody的第一行声明函数时调用此函数:
Debug::log($message(可选))
您必须将其作为扩展安装,但类似的探查器将为您提供调用哪些函数以及所需时间的详细信息,以及调用图。或/将显示调用的函数,但不显示其参数
您还可以使用,它提供了定义的所有函数的列表。但它不会显示实际调用了哪些函数,以及使用了哪些参数
如果你真的需要知道这些参数,除了Henze在回答中提供的自定义记录器之外,我不知道还有其他工具。我在搜索类似的东西,发现xdebug的跟踪非常有用 下面是一个示例,展示了它的外观:
@Ozzone对于变通解决方案,您必须更加详细-问题的性质是什么,获取所有函数的列表将如何帮助,等等。也许您需要的是一个实际的调试器?