牛牛在线工具

ReflectionGenerator::getTrace()

收录 8868 个 PHP 函数,含用途说明与用法示例。

ReflectionGenerator::getTrace()

获取生成器函数的调用堆栈

ReflectionGenerator::getTrace()是PHP的一个内置函数,用于获取生成器函数的调用堆栈。 用法: public ReflectionGenerator::getTrace ( int $options = DEBUG_BACKTRACE_PROVIDE_OBJECT [, int $limit = -1 ] ) : array 参数: options(可选):指定调用堆栈中是否包含对象信息,默认为DEBUG_BACKTRACE_PROVIDE_OBJECT。可以使用以下常量之一: DEBUG_BACKTRACE_PROVIDE_OBJECT:返回的调用堆栈中包含对象信息。 DEBUG_BACKTRACE_IGNORE_ARGS:返回的调用堆栈中不包含函数参数信息。 limit(可选):指定要返回的堆栈帧数的限制,默认为-1,表示无限制。 返回值: 返回一个包含调用堆栈信息的关联数组。 示例: function generatorFunc() { yield 'Hello'; yield 'World'; $reflection = new ReflectionGenerator(); $trace = $reflection->getTrace(); var_dump($trace); } $generator = generatorFunc(); foreach ($generator as $value) { echo $value . " "; } 输出: array(2) { [0]=> array(4) { ["file"]=> string(28) "/path/to/your/script.php" ["line"]=> int(8) ["function"]=> string(13) "generatorFunc" ["class"]=> string(18) "ReflectionGenerator" } [1]=> array(6) { ["file"]=> string(28) "/path/to/your/script.php" ["line"]=> int(13) ["function"]=> string(12) "{closure}" ["class"]=> string(18) "Generator" ["object"]=> object(Generator)#1 (0) { } ["type"]=> string(2) "->" } } 以上示例中,我们定义了一个生成器函数generatorFunc(),它返回两个yield值。在函数内部,我们创建了一个ReflectionGenerator对象,并调用getTrace()方法来获取调用堆栈信息。最后,我们使用var_dump()函数打印堆栈信息。 输出结果显示了两个堆栈帧的信息。第一个帧是generatorFunc()函数的调用,其中包含了文件名、行号、函数名和类名(ReflectionGenerator)。第二个帧是匿名函数{closure}的调用,其中包含了文件名、行号、函数名、类名(Generator)、对象信息和调用类型。