[résolu] Warning: Call-time pass-by-reference has been deprecated

Warning: Call-time pass-by-reference has been deprecated [résolu] - PHP - Programmation

Marsh Posté le 01-08-2009 à 17:13:11    

Bonjour,
 
Voilà j'ai un soucis qui se présente sur une page d'un site. Le message d'erreur est le suivant :  
 
Warning: Call-time pass-by-reference has been deprecated in /home/www/737f1bcd492f37c0dc1e53be62b34934/web/actualites/index.php on line 136
 
Alors après avoir fait des petites recherches j'ai cru comprendre qu'il fallait enlever & sur la ligne en question :  
 

Code :
  1. function sql_to_array($req,$function = '') {
  2.   $return_array = array();
  3.   while ($row = @mysql_fetch_array($req)) {
  4.    if (!empty($function)) {
  5.     call_user_func($function, &$row);
  6.    } 
  7.    array_push($return_array, $row);
  8.   }
  9.   @mysql_free_result($req);
  10.   return $return_array;
  11. }


Ce que j'ai fait mais ensuite, je n'obtiens même plus le message d'erreur. Page blanche. Bon j'y connais rien du tout mais il semblerait que ce genre de code soit dépassé.  
J'ai vu aussi que ce message s'accompagne souvent d'une référence au php.ini qu'il faut modifier. Mais moi rien du tout. De toute façon j'y ai pas accès.
 
A savoir que ce problème survient après changement d'hébergeur. Il fonctionne avec php5. Le précédent je ne sais pas où il en était. C'est peut-être aussi dû à ça ?  
 
Merci par avance pour les infos que vous pourriez m'apporter.


Message édité par loulipo le 02-08-2009 à 14:21:58
Reply

Marsh Posté le 01-08-2009 à 17:13:11   

Reply

Marsh Posté le 01-08-2009 à 17:46:12    

ben le message d'erreur est clair: tu peux plus passer de variable par référence dans call_user_func, passes une copie à la place:
 

Code :
  1. call_user_func($function, $row);


---------------
http://petitjonas.blogspot.com/
Reply

Marsh Posté le 02-08-2009 à 11:57:39    

Merci à toi jonas3. C'est bien ce que j'avais tenté de faire. Sans résultats. Merci quand même en tout cas.
 
Bon comme j'avais un autre problème sur une autre page résolu en changeant les droits sur un fichier j'ai tenté la même chose puisque les deux soucis sont apparus en même temps au changement d'hébergeur... Et c'est bon tout roule. Suis bien contente.

Message cité 1 fois
Message édité par loulipo le 02-08-2009 à 14:23:56
Reply

Marsh Posté le 02-02-2010 à 09:48:52    

Bonjour,
J'ai le même problème, puorriez vous me dire ce que vous avez effectué pour résoudre le votre ?
merci par avance.
 

loulipo a écrit :

Merci à toi jonas3. C'est bien ce que j'avais tenté de faire. Sans résultats. Merci quand même en tout cas.
 
Bon comme j'avais un autre problème sur une autre page résolu en changeant les droits sur un fichier j'ai tenté la même chose puisque les deux soucis sont apparus en même temps au changement d'hébergeur... Et c'est bon tout roule. Suis bien contente.


Reply

Marsh Posté le 02-02-2010 à 09:59:30    

faut enlever le '&' dans le parametre

Reply

Marsh Posté le 19-08-2010 à 18:28:23    

up
 
J'ai aussi ce truc mais la solution d'enlever le '&' me parait hasardeuse ... Quelqu'un sait-il pourquoi c'est déprécié ?  
 
On est obligé de passer les paramètres par copie ou au contraire tout est par référence maintenant ??


---------------
"L'informatique n'est pas plus la science des ordinateurs que l'astronomie n'est celle des télescopes." Michael R. Fellows & Ian Parberry
Reply

Marsh Posté le 21-06-2011 à 09:55:57    

Ricco a écrit :

up
 
J'ai aussi ce truc mais la solution d'enlever le '&' me parait hasardeuse ... Quelqu'un sait-il pourquoi c'est déprécié ?  
 
On est obligé de passer les paramètres par copie ou au contraire tout est par référence maintenant ??


 
Je viens de rencontrer ce problème.
La déclaration de référence dans la liste des paramètres d'une fonction est maintenant déprécié, mais attention SEULEMENT sa déclaration !!!
Effectivement il faut laisser le & lors de l'appel de cette dernière sinon on risque d'avoir un comportement non souhaité (passage par copie sinon ).
 
ex:  
 
function Recurs($param)
{
...
Recurs(&$param[$key]);
...
}
 
Recurs(&$tab);
 
Pour tous ceux qui, comme moi, cherche à comprendre cette dépréciation et s'y conformer.

Reply

Marsh Posté le 21-06-2011 à 11:55:57    

Oups...
 
C'est l'inverse, il faut retirer le & dans l'appel et le conserver dans la définition de la fonction.
 
 :pt1cable:

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed