Вызов статического метода из имени строки в PHP
Мне нужно вызвать статический метод класса, но у меня есть только имя класса, а не его экземпляр. Я делаю это так.
$class = new "ModelName";
$items = $class::model()->findAll();
Он работает на моем компьютере, но когда я перехожу на сервер, он бросает unexpected T_PAAMAYIM_NEKUDOTAYIM
, поэтому я думаю, что он действительно ожидает, что модель будет переменной вместо метода.
PS: Если это помогает, это структура Yii, поэтому, если есть другой способ вызвать функции find(), это нормально для меня.
Заранее спасибо
Ответы
Ответ 1
Это связано с тем, что ваш сервер запускает версию PHP раньше 5.3.0, в которой этот синтаксис не поддерживается.
Из документации по оператор разрешения области видимости:
Начиная с PHP 5.3.0, можно ссылаться на класс, используя переменная. Значение переменной не может быть ключевым словом (например, self, parent и статические).
В любом случае вы всегда можете использовать call_user_func
:
$class = "ModelName"; // the "new" in your example was a typo, right?
$items = call_user_func(array($class, 'model'))->findAll();