如何调用分配给类的静态数组的函数?

时间:2014-03-05 16:58:35

标签: php closures static-variables

我试图将一个函数添加到类中的静态变量,然后从我的代码中的其他地方调用该函数。

有效

<?php

class MyClass {
    static $myVar = [];
    static function set_myVar($function) {
        self::$myVar[] = $function;
    }
}

MyClass::set_myVar(function () { echo 'hello world!'; });
$t = MyClass::$myVar[0];
$t();

?>

但是,

<?php

class MyClass {
    static $myVar = [];
    static function set_myVar($function) {
        self::$myVar[] = $function;
    }
}

MyClass::set_myVar(function () { echo 'hello world!'; });
MyClass::$myVar[0]();

?>

导致以下错误:

  

注意:未定义的变量:第11行的C:\ xampp \ htdocs \ public \ index.php中的myVar

     

致命错误:第11行的C:\ xampp \ htdocs \ public \ index.php中的函数名必须是字符串

谁能告诉我为什么?

1 个答案:

答案 0 :(得分:1)

PHP解释器尝试在引用类中的静态数组之前评估$myVar[0]()

如果放置

,可以进行测试
$myVar = ["set_myVar"];
错误发生之前

你得到:

Warning: Missing argument 1 for MyClass::set_myVar()