我试图将一个函数添加到类中的静态变量,然后从我的代码中的其他地方调用该函数。
此有效:
<?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中的函数名必须是字符串
谁能告诉我为什么?
答案 0 :(得分:1)
PHP解释器尝试在引用类中的静态数组之前评估$myVar[0]()
。
如果放置
,可以进行测试$myVar = ["set_myVar"];
错误发生之前你得到:
Warning: Missing argument 1 for MyClass::set_myVar()