微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐