问题
My local computer runs PHP 5.3.2, while my server runs 5.2.5. I get
Parse error: syntax error, unexpected T_PAAMAYIM_NEKUDOTAYIM
with
$productsIterator = $productModule::load(Phlex_Db_Order::Asc('name'));
I assume the error happens because PHP 5.2.5 doesn't support $stringClassName::methodName() syntax.
Does anyone know either 1) a workaround or 2) some other reason this is happening?
回答1:
One workaround will be
call_user_func(array($productModule, "load"), Phlex_Db_Order::Asc('name'));
or, according to the manual since 5.2.3:
call_user_func($productModule."::load", Phlex_Db_Order::Asc('name'));
Only one thing to note:
the parameters for call_user_func() are not passed by reference.
And for completeness' sake, you are right, "dynamic" calling of static methods was added in 5.3.0. From the PHP 5 change log:
Added support for dynamic access of static members using
$foo::myFunc()
. (Etienne Kneuss)
来源:https://stackoverflow.com/questions/3679717/unexpected-t-paamayim-nekudotayim-on-one-computer-but-not-another-with-php-5