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

suppose I have a static class A with static method b()

now suppose I have class C with class variable functionName = 'A';

so I want to invoke A's b() function in one line via the following:

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

however this ends up returning parse error....is there a way that I can invoke A::b() when via $this->functionName when $this->functionName = 'A' in just one line without call_user_func etc?

The Uniform Variable Syntax RFC covers this, and has been implemented for PHP 7.

It has not been back-ported, you will not be able to use that syntax in any version prior.


PHP 7 Example:

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

class c
{
    public $functionName = 'a';

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

(new c)->run();

Output:

Hello!