在方法调用期间使用object属性作为静态类名

时间:2015-03-13 20:20:26

标签: php class object methods static

假设我有一个带有静态方法b()

的静态类A.

现在假设我的C类有类变量functionName =' A&#39 ;;

所以我想通过以下方式在一行中调用A&#39的b()函数:

//within class C
$this->functionName::b();

然而这最终会返回解析错误....当$ this-> functionName =' A&#时,有什么方法可以通过$ this-> functionName调用A :: b() 39;只有一行没有call_user_func等?

1 个答案:

答案 0 :(得分:0)

Uniform Variable Syntax RFC涵盖了这一点,并已针对PHP 7实现。

它没有后端移植,您将无法在之前的任何版本中使用该语法。


PHP 7示例:

class a
{
    static public function b()
    {
        echo "Hello!";
    }
}

class c
{
    public $functionName = 'a';

    public function run()
    {
        $this->functionName::b();
    }
}

(new c)->run();

输出:

Hello!