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

报告相同问题?

悬赏问题

  • ¥15 GDI处理通道视频时总是带有白色锯齿
  • ¥20 用雷电模拟器安装百达屋apk一直闪退
  • ¥15 算能科技20240506咨询(拒绝大模型回答)
  • ¥15 自适应 AR 模型 参数估计Matlab程序
  • ¥100 角动量包络面如何用MATLAB绘制
  • ¥15 merge函数占用内存过大
  • ¥15 Revit2020下载问题
  • ¥15 使用EMD去噪处理RML2016数据集时候的原理
  • ¥15 神经网络预测均方误差很小 但是图像上看着差别太大
  • ¥15 单片机无法进入HAL_TIM_PWM_PulseFinishedCallback回调函数