14

我需要调用一个类的静态方法,但我只有一个类名,没有它的实例。我正在这样做。

$class = new "ModelName";
$items = $class::model()->findAll();

它可以在我的计算机上运行,​​但是当我移动到服务器时,它会抛出一个unexpected T_PAAMAYIM_NEKUDOTAYIM,所以我认为它实际上期望模型是一个变量而不是一个方法。

PS:如果有帮助,那就是 Yii 框架,所以如果有其他方法可以调用 find() 函数,我可以。

提前致谢

4

1 回答 1

23

这是因为您的服务器运行的 PHP 版本早于 5.3.0,其中不支持此语法。

范围解析运算符的文档中:

从 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();
于 2012-07-10T10:08:11.283 回答