【发布时间】:2015-03-13 20:20:26
【问题描述】:
假设我有一个带有静态方法 b() 的静态类 A
现在假设我有类 C 类变量 functionName = 'A';
所以我想通过以下方式在一行中调用 A 的 b() 函数:
//within class C
$this->functionName::b();
但是这最终会返回解析错误....有没有一种方法可以通过 $this->functionName 调用 A::b() when $this->functionName = 'A' 在一行中没有call_user_func 等?
【问题讨论】:
-
抱歉没有正确阅读问题:(
-
你为什么反对
call_user_func?这就是它存在的原因(部分)。像这样进行动态调用。 -
如果 $this->functionName 是一个普通变量,例如 $x 它会起作用....例如 $x::b() 如果 $x = 'A' 会起作用....因为$this->functioName 也只是一个变量,就像 $x 我正在尝试使用相同的符号
-
然后将其设为普通(局部)变量。
$className = $this->className; $className::b();效果很好。两行代码。或者使用call_user_func一行代码。您有两个不错的选择。 -
从 5.3 开始就可以了。这引出了一个问题,您使用的是哪个版本?
标签: php class object methods static