"неожиданный T_PAAMAYIM_NEKUDOTAYIM" на одном компьютере, но не другой с PHP 5

Мой локальный компьютер запускает 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(). (Этьенн Кнейс)