📜  PHP | ReflectionGenerator getExecutingGenerator()函数(1)

📅  最后修改于: 2023-12-03 14:45:18.757000             🧑  作者: Mango

PHP | ReflectionGenerator getExecutingGenerator() 函数

ReflectionGenerator 类中的 getExecutingGenerator() 函数用于获取当前正在执行的协程生成器对象。

函数定义
public static ReflectionGenerator|null ReflectionGenerator::getExecutingGenerator(void)
返回值

如果当前上下文不是在协程中执行,则返回 NULL。如果正在执行协程,则返回 ReflectionGenerator 对象。

使用示例
function coroutine()
{
    yield;
    $generator = \ReflectionGenerator::getExecutingGenerator();

    echo get_class($generator) . "\n";
    echo "File: " . $generator->getExecutingFile() . "\n";
    echo "Line: " . $generator->getExecutingLine() . "\n";
    echo "Function: " . $generator->getExecutingFunction() . "\n";
}

$coroutine = coroutine();
$coroutine->current();

在上面的示例中,我们定义了一个名为 coroutine() 的生成器函数。生成器函数中我们使用 yield 语句暂停生成器的执行,然后使用 ReflectionGenerator::getExecutingGenerator() 函数获取当前正在执行的协程生成器对象。我们打印了获取到的 ReflectionGenerator 对象的类名、当前协程生成器执行的文件名、当前协程生成器执行的行数以及当前协程生成器执行的函数名。

然后我们调用了 coroutine() 函数,其返回一个生成器对象。我们使用 current() 方法开始执行生成器。在运行过程中,上述函数将打印以下输出:

ReflectionGenerator
File: /path/to/file.php
Line: 4
Function: coroutine

上述输出告诉我们,当前正在执行协程的生成器是 coroutine() 函数,其位于 /path/to/file.php 中的第 4 行。