Мне нужно вызвать статический метод класса, но у меня есть только имя класса, а не его экземпляр. Я делаю это так.
$class = new "ModelName"; $items = $class::model()->findAll();
Он работает на моем компьютере, но когда я unexpected T_PAAMAYIM_NEKUDOTAYIM
на сервер, он выдает unexpected T_PAAMAYIM_NEKUDOTAYIM
, поэтому я думаю, что он действительно ожидает, что модель будет переменной вместо метода.
PS: Если это помогает, это структура Yii, поэтому, если есть другой способ вызвать функции find (), это нормально для меня.
заранее спасибо
Это связано с тем, что ваш сервер запускает версию 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();