加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

php闭包:为什么绑定到静态类时匿名函数声明中的’static’?

发布时间:2020-12-13 18:24:47 所属栏目:PHP教程 来源:网络整理
导读:关于Closure :: bind的php文档中的示例包括匿名函数声明中的static.为什么?如果删除它,我找不到区别. 有: class A { private static $sfoo = 1; }$cl1 = static function() { return self::$sfoo; }; // notice the "static"$bcl1 = Closure::bind($cl1,nu
关于Closure :: bind的php文档中的示例包括匿名函数声明中的static.为什么?如果删除它,我找不到区别.

有:

class A { private static $sfoo = 1; }
$cl1 = static function() { return self::$sfoo; }; // notice the "static"
$bcl1 = Closure::bind($cl1,null,'A');
echo $bcl1(); // output: 1

无:

class A { private static $sfoo = 1; }
$cl1 = function() { return self::$sfoo; };
$bcl1 = Closure::bind($cl1,'A');
echo $bcl1(); // output: 1
正如您所注意到的,它并不重要,但如果您在error_reporting中包含E_STRICT,它可能会显示为错误. (更新:不,它没有)

这就像在类方法上使用static关键字一样.如果你不在方法中引用$this,你不一定需要它(虽然这确实违反了严格的标准).

我想PHP可以解决你的意思是Closure静态访问A由于bind()的null第二个参数

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读