我从来没有意识到PHP中的函数可以有自己的静态变量,如下所示:
function example() {
static $heavy;
if ($heavy === null) {
$heavy = new HeavyClass();
}
return $heavy->doSomething();
}
我的问题是,是否可以从外部访问此静态值?像example::$heavy
之类的东西显然不起作用。
答案 0 :(得分:2)
如评论中所建议,可以通过ReflectionFunctionAbstract::getStaticVariables()方法来完成。
示例:
$heavy = (new ReflectionFunction('example'))->getStaticVariables()['heavy'];