2010-09-09 17 views
1

Mon ordinateur local fonctionne sous PHP 5.3.2, alors que mon serveur tourne sous 5.2.5. Je reçois"T_PAAMAYIM_NEKUDOTAYIM inattendu" sur un ordinateur mais pas un autre avec PHP 5

Parse error: syntax error, unexpected T_PAAMAYIM_NEKUDOTAYIM 

avec

$productsIterator = $productModule::load(Phlex_Db_Order::Asc('name')); 

Je suppose que l'erreur se produit parce que PHP 5.2.5 ne prend pas en charge $ stringClassName :: syntaxe methodName().

Est-ce que quelqu'un sait 1) une solution de contournement ou 2) une autre raison pour laquelle cela se produit?

Répondre

9

Une solution de contournement sera

call_user_func(array($productModule, "load"), Phlex_Db_Order::Asc('name')); 

ou, selon le manuel depuis 5.2.3:

call_user_func($productModule."::load", Phlex_Db_Order::Asc('name')); 

Une seule chose à note:

les paramètres pour call_user_func() ne sont pas passés par référence.

Par souci d'exhaustivité, vous avez raison, l'appel "dynamique" des méthodes statiques a été ajouté en 5.3.0. De l'PHP 5 change log:

Ajout du support pour l'accès dynamique des membres statiques à l'aide $foo::myFunc(). (Etienne Kneuss)

+1

+1, et si vous avez besoin de passer par référence, vous pouvez utiliser 'call_user_func_array ($ callback, array (& $ param1, & $ param2)); – ircmaxell