我需要调用类的静态方法,但我只有一个类名,而不是它的一个实例。我是这样做的。
$class = new "ModelName";
$items = $class::model()->findAll();
它可以在我的计算机上运行,但是当我移动到服务器时,它会抛出unexpected T_PAAMAYIM_NEKUDOTAYIM
,所以我认为它实际上期望模型是变量而不是方法。
提前致谢
答案 0 :(得分:22)
这是因为您的服务器运行的是早于5.3.0的PHP版本,其中不支持此语法。
来自scope resolution operator的文档:
从PHP 5.3.0开始,可以使用a引用该类 变量。变量的值不能是关键字(例如self,parent 和静态)。
无论如何,您始终可以使用call_user_func
:
$class = "ModelName"; // the "new" in your example was a typo, right?
$items = call_user_func(array($class, 'model'))->findAll();