PHP闭包:为什么绑定到静态类时匿名函数声明中的“静态”?

学习PHP

php文档中Closure::bind包含static匿名函数声明中的示例为什么?如果将其删除,我找不到差异。

class A {
    private static $sfoo = 1;
}
$cl1 = static function() { // notice the "static"
    return self::$sfoo;
};
$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, null, 'A');
echo $bcl1(); // output: 1
菲尔

正如您所注意到的,这并不重要。

就像static在类方法上使用关键字一样如果您未在方法中进行引用,则不一定需要$this(尽管这确实违反了严格的标准)。

我想PHP可以解决您的问题ClosureA因为第null2个参数可以静态访问bind()

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何在PHP中将闭包绑定到静态类变量?

为什么我会从将弱的self传递到静态函数的闭包中得到一个保留周期?

为什么静态成员函数只能在类定义中声明为静态,而不能在其自身定义中声明为静态?

在PHP中重构闭包/匿名函数

为什么C#将匿名方法和闭包实现为实例方法,而不是静态方法?

在WPF中绑定到静态类中的静态属性

为什么使用闭包将函数绑定到对象是错误的?

JSDOC用于Java闭包或匿名函数中的类

当在子类上调用其父类中声明的静态方法时,为什么不调用子类的静态初始化程序?

闭包和静态函数

为什么在不声明类对象的情况下调用非静态函数?

为什么方法局部静态变量绑定到类而不是实例?

当我将嵌套的静态Fragment类声明为private时,为什么会生成错误?

为什么静态方法中的本地类不是静态的

非静态类中的静态构造函数的功能是什么?

为什么在从函数返回数组时需要将数组声明为静态数组。(C++)

Java中的静态嵌套类,为什么?

为什么将Mapper和Reducer类声明为静态?

为什么不能将Java类声明为静态?

为什么在Java中将类声明为静态?

为什么要在类的构造函数中初始化子类,类的子类类必须是静态的?

为什么我不能使用msvc在模板类中声明静态constexpr变量?

PHP在类的静态方法中调用函数

PHP中静态类函数的目的

Azure函数:绑定到DocumentClient与静态实例-建议什么?

为什么在C ++中不能将构造函数声明为静态?

在函数覆盖中,为什么我们不将其声明为静态

为什么该Boost绑定非静态成员函数失败?

PHP匿名函数中静态变量的作用域