gpt4 book ai didi

php - 使类的静态成员成为函数(闭包)不起作用

转载 作者:可可西里 更新时间:2023-10-31 22:51:54 25 4
gpt4 key购买 nike

(PHP7)考虑下面的代码,它试图将一个函数分配给一个变量,然后确保它只被调用一次。

class a{
static public $b;
static public function init(){
self::$b();
self::$b=function(){};
}
}
a::$b=function(){echo 'Here I do very heavy stuff, but will happen only in the first time I call init()';};

for($i=0;$i<1000;$i++){
a::init();
}

在 php7 中,它会给出一个错误,它期望 a::$b 是一个字符串(要调用的函数名)。
如果我使用纯变量而不是静态成员,它会起作用。
我的问题是,这是否可行,或者我是否可以做一些小调整以使其在没有纯变量的情况下工作

最佳答案

您可以使用 PHP 7 Uniform Variable Syntax :

(self::$b)();

或者PHP 5+(包括7)中的临时变量:

$init = self::$b;
$init();

As seen on 3v4l.org .

关于php - 使类的静态成员成为函数(闭包)不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39211436/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com