一台计算机上出现"意外的T_PAAMAYIM_NEKUDOTAYIM",而PHP 5出现了另一台计算机

Cha*_*son 1 php php-5.2

我的本地计算机运行PHP 5.3.2,而我的服务器运行5.2.5.我明白了

Parse error: syntax error, unexpected T_PAAMAYIM_NEKUDOTAYIM
Run Code Online (Sandbox Code Playgroud)

$productsIterator = $productModule::load(Phlex_Db_Order::Asc('name'));
Run Code Online (Sandbox Code Playgroud)

我假设错误发生是因为PHP 5.2.5不支持$ stringClassName :: methodName()语法.

有没有人知道1)解决方法或2)其他原因发生了什么?

Pek*_*ica 9

一个解决方法是

 call_user_func(array($productModule, "load"), Phlex_Db_Order::Asc('name'));
Run Code Online (Sandbox Code Playgroud)

或者,根据自5.2.3以来的手册:

 call_user_func($productModule."::load", Phlex_Db_Order::Asc('name'));
Run Code Online (Sandbox Code Playgroud)

只有一点需要注意:

call_user_func()的参数不通过引用传递.

为了完整起见,你是对的,5.3.0中添加了"动态"调用静态方法.从PHP 5更改日志:

添加了对使用静态成员的动态访问的支持$foo::myFunc().(艾蒂安·凯纳斯)