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

前端之家收集整理的这篇文章主要介绍了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第二个参数

猜你在找的PHP相关文章