Мой локальный компьютер запускает PHP 5.3.2, а мой сервер - 5.2.5. Я получаю
Parse error: syntax error, unexpected T_PAAMAYIM_NEKUDOTAYIM
с
$productsIterator = $productModule::load(Phlex_Db_Order::Asc('name'));
Я предполагаю, что ошибка возникает, потому что PHP 5.2.5 не поддерживает синтаксис $stringClassName:: methodName().
Кто-нибудь знает либо 1) обходной путь, либо 2) какую-то другую причину это происходит?
Ответ 1
Обходное решение будет
call_user_func(array($productModule, "load"), Phlex_Db_Order::Asc('name'));
или, согласно руководству с 5.2.3:
call_user_func($productModule."::load", Phlex_Db_Order::Asc('name'));
Только одно: note:
параметры для call_user_func() не передаются по ссылке.
И для полноты, вы правы, "динамическое" вызов статических методов было добавлено в 5.3.0. Из журнал изменений PHP 5:
Добавлена поддержка динамического доступа статических элементов с помощью $foo::myFunc()
. (Этьенн Кнейс)