PHP,Closure类

Avi*_*ida 6 php closures class

我试图了解关闭类,在手册中,所有在手册链接,

Closure :: __ construct - 不允许实例化的构造函数.如果我理解正确,这个类的唯一实例是匿名函数变量赋值.

但我不明白几行:

Closure :: bind - 使用特定绑定对象和类作用域复制闭包.

Closure :: bindTo - 使用新的绑定对象和类作用域复制闭包.

手册中的最后一句我不理解这句话:

除了这里列出的方法,这个类还有一个__invoke方法.这是为了与实现调用魔术的其他类保持一致,因为此方法不用于调用函数.

如果可以请一些人试着向我解释一下,我会非常感激,祝你有愉快的一天.

Alv*_*ong 8

它指的是召唤魔法.

正如我的理解,对于包含__invoke其实例的任何类,可以调用它,就好像它是一个函数一样.这样的Closure::__invoke行为.

即,当$foo是类Closure(匿名函数)时,调用$foo($bar)将调用$foo->__invoke(bar)(虽然该__invoke成员不是要直接调用,这只是为了说明它是如何工作的).

定义匿名函数时,执行以下操作:

$greet = function($name)
{
    printf("Hello %s\r\n", $name);
};
Run Code Online (Sandbox Code Playgroud)

现在,$greet是上课了Closure.并且$greet->__invoke有点等于function($name){ printf("Hello %s\r\n", $name); }

请记住,这Closure::__invoke是一种魔术方法.