PHP:为什么类中的静态变量不能用作变量函数?

时间:2013-02-01 20:47:12

标签: php function variables static

我是新手使用静态方法&类中的属性。我要做的是运行variable function,但不能使用:

self::$static_var()

PHP发出通知:

Undefined variable: static_var

我必须先分配一个局部变量,如下所示:

$local_var = self::$static_var;

然后我可以做

$local_var();

这是一些示例代码。 我不明白为什么测试1 不起作用。我必须执行测试2 以获得所需的功能。 问题: 为什么测试1 不起作用?

测试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);
    }
}

测试2 - 工作

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);
    }
}

1 个答案:

答案 0 :(得分:3)

使用call-user-func

call_user_func(self::$static_var, $passed_var);

关于您编辑过的问题:

我试图在PHP文档中找到解释。这可能是因为在处理函数调用时尚未评估$static_var。但问题的最佳答案可能是:因为它就是这样。一个很好的例子是:$classname::metdhod();在PHP 5.3之前无效。现在它是。真的没有理由。你应该问PHP人员。