Ita*_*vka 4 php lambda functional-programming php-7
(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();
}
Run Code Online (Sandbox Code Playgroud)
在php7中,它会给出一个错误,它希望a::$b
是一个字符串(要调用的函数名).
如果我使用纯变量而不是静态成员,它将起作用.
我的问题是,这假设是否有效,或者是否有一个小的调整我可以做到这个没有纯粹的变量工作?
您可以使用PHP 7 统一变量语法:
(self::$b)();
Run Code Online (Sandbox Code Playgroud)
或PHP 5+中的临时变量(包括7):
$init = self::$b;
$init();
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
52 次 |
最近记录: |