将PHP闭包分配给静态类变量时,稍后执行,例如:
self::$FOO = function($a) {return $a;};
self::$FOO(123)
PHP警告“函数名称必须是字符串”。
如果首先将类变量分配给普通变量,则执行:
$bar = self::$FOO;
$bar(123);
然后一切都好。
有没有办法直接使用类变量执行闭包,而不首先将它分配给普通变量?
答案 0 :(得分:0)
您需要使用__invoke()
来使用$foo()
语法调用闭包。
一个简单的例子:
class MyClass {
public static $closure;
function myFunction() {
self::$closure = function($a) { echo $a; };
self::$closure->__invoke(123);
}
}
$class = new MyClass;
$class->myFunction();
这将打印出123
:)