我是新手使用静态方法&类中的属性。我要做的是运行variable function,但不能使用:
self::$static_var()
PHP发出通知:
Undefined variable: static_var
我必须先分配一个局部变量,如下所示:
$local_var = self::$static_var;
然后我可以做
$local_var();
这是一些示例代码。 我不明白为什么测试1 不起作用。我必须执行测试2 以获得所需的功能。 问题: 为什么测试1 不起作用?
X::do_stuff('whatever');
class X {
public static $static_var = 'print_r';
public static function do_stuff($passed_var) {
self::$static_var($passed_var);
}
}
X::do_stuff('whatever');
class X {
public static $static_var = 'print_r';
public static function do_stuff($passed_var) {
$local_var = self::$static_var;
$local_var($passed_var);
}
}
答案 0 :(得分:3)
call_user_func(self::$static_var, $passed_var);
关于您编辑过的问题:
我试图在PHP文档中找到解释。这可能是因为在处理函数调用时尚未评估$static_var
。但问题的最佳答案可能是:因为它就是这样。一个很好的例子是:$classname::metdhod();
在PHP 5.3之前无效。现在它是。真的没有理由。你应该问PHP人员。