216 votes

PHP 5.4 Pass-by-référence de temps d'appel - Easy fix disponible?

Est-il possible de résoudre facilement ce problème ou ai-je vraiment besoin de réécrire tout le code existant?

PHP Erreur irrécupérable: la référence de renvoi par appel a été supprimée dans ... sur la ligne 30

Cela se produit partout lorsque les variables sont passées dans des fonctions en tant que références dans tout le code.

341voto

Tim Cooper Points 55292

Vous devriez être en désignant l'appel par référence à la définition de la fonction, non pas de l'appel. Depuis PHP a commencé à montrer la désapprobation des erreurs dans la version 5.3, je dirais que ce serait une bonne idée de réécrire le code.

À partir de la documentation:

Il n'y a pas de signe de référence sur un appel de fonction - seulement sur des définitions de fonction. Les définitions de fonctions à lui seul suffit pour passer correctement l'argument par référence. Depuis PHP 5.3.0, vous obtiendrez un avertissement disant que "call-time pass-by-reference" est obsolète lorsque vous utilisez & en foo(&$a);.

Par exemple, au lieu d'utiliser:

// Wrong way!
myFunc(&$arg);               # Deprecated pass-by-reference argument
function myFunc($arg) { }

Utilisation:

// Right way!
myFunc($var);                # pass-by-value argument
function myFunc(&$arg) { }

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X