Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ajax/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在PHP中获取被调用函数列表_Php - Fatal编程技术网

在PHP中获取被调用函数列表

在PHP中获取被调用函数列表,php,Php,在PHP中,get_included_files()返回包含文件名的数组 以类似的方式,是否有任何方法可以获得一个包含被调用函数名和参数的数组 这样,是否有任何方法可以获得一个数组,其中包含被调用函数的名称和参数 没有 您可以做的是显示所有函数调用(带有参数),这些函数调用将导致执行您正在从中执行回溯的行(“调用堆栈”),但这与脚本中调用的所有函数不同 你想做什么?也许有不同的方法。我不知道 但是,您可以使用来获取当前活动的函数/方法层次结构。我认为没有办法实现您想要的功能。对不起 我能得到的最

在PHP中,
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对于变通解决方案,您必须更加详细-问题的性质是什么,获取所有函数的列表将如何帮助,等等。也许您需要的是一个实际的调试器?