doudao1369
2015-03-13 20:20
浏览 59
已采纳

在方法调用期间使用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?

  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

1条回答 默认 最新

  • douhua1890 2015-03-13 20:47
    已采纳

    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!
    
    已采纳该答案
    打赏 评论

相关推荐 更多相似问题