我知道你可以使用变量作为类名来调用静态方法,例如:
$className = "Foo";
$className::Bar(); //works
但是当我尝试像这样将静态属性用作变量时:
self::$className = "Foo";
self::$className::Bar(); //doesn't
我在调用方法的那一行遇到了以下解析错误:
Parse error: syntax error, unexpected '::' (T_PAAMAYIM_NEKUDOTAYIM)
那么我如何使用静态属性调用该方法,是否可以使用类似于我描述的语法(不使用call_user_func
和创建存储self::$className
的局部变量)?
self
指的是当前类作用域的类名。所以基本上,你想要表达的是“从当前类self
中调用一个方法(Bar()
),该方法属于类($className
)”。这没有太多意义,对吧? - Avalancheself
中有一个属性$className
,我正在尝试调用一个与$className
值相等的类的方法。 - Danil Solodunov