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!
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥17 pro*C预编译“闪回查询”报错SCN不能识别
  • ¥15 微信会员卡接入微信支付商户号收款
  • ¥15 如何获取烟草零售终端数据
  • ¥15 数学建模招标中位数问题
  • ¥15 phython路径名过长报错 不知道什么问题
  • ¥15 深度学习中模型转换该怎么实现
  • ¥15 Stata外部命令安装问题求帮助!
  • ¥15 从键盘随机输入A-H中的一串字符串,用七段数码管方法进行绘制。提交代码及运行截图。
  • ¥15 如何用python向钉钉机器人发送可以放大的图片?
  • ¥15 matlab(相关搜索:紧聚焦)