是否可以获取函数的静态值?

时间:2019-03-04 22:48:21

标签: php

我从来没有意识到PHP中的函数可以有自己的静态变量,如下所示:

function example() {
    static $heavy;

    if ($heavy === null) {
        $heavy = new HeavyClass();
    }

    return $heavy->doSomething();
}

我的问题是,是否可以从外部访问此静态值?像example::$heavy之类的东西显然不起作用。

1 个答案:

答案 0 :(得分:2)

如评论中所建议,可以通过ReflectionFunctionAbstract::getStaticVariables()方法来完成。

示例:

$heavy = (new ReflectionFunction('example'))->getStaticVariables()['heavy'];