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

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

关于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第二个参数

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

相关推荐