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

(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中,它会给出一个错误,它希望:: $b是一个字符串(要调用函数名).
如果我使用纯变量而不是静态成员,它将起作用.
我的问题是,这假设是否有效,或者是否有一个小的调整我可以做到这个没有纯粹的变量工作?

解决方法:

您可以使用PHP 7 Uniform Variable Syntax

(self::$b)();

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

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

As seen on 3v4l.org.

相关文章

统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...
统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...
前言 之前做了微信登录,所以总结一下微信授权登录并获取用户...
FastAdmin是我第一个接触的后台管理系统框架。FastAdmin是一...
之前公司需要一个内部的通讯软件,就叫我做一个。通讯软件嘛...
统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...