Kor*_*lis 13 php static-methods yii
我需要调用类的静态方法,但我只有一个类名,而不是它的一个实例.我是这样做的.
$class = new "ModelName";
$items = $class::model()->findAll();
Run Code Online (Sandbox Code Playgroud)
它可以在我的计算机上运行,但是当我移动到服务器时,它会抛出一个unexpected T_PAAMAYIM_NEKUDOTAYIM,所以我认为它实际上期望模型是变量而不是方法.
PS:如果它有帮助,它是Yii框架,所以如果有另一种方法来调用find()函数,那对我来说没问题.
提前致谢
Jon*_*Jon 22
这是因为您的服务器运行早于5.3.0的PHP版本,其中不支持此语法.
从范围解析运算符的文档:
从PHP 5.3.0开始,可以使用变量引用该类.变量的值不能是关键字(例如self,parent和static).
无论如何,您总是可以使用call_user_func:
$class = "ModelName"; // the "new" in your example was a typo, right?
$items = call_user_func(array($class, 'model'))->findAll();
Run Code Online (Sandbox Code Playgroud)