fonction avec passage par reference de variable

fonction avec passage par reference de variable - PHP - Programmation

Marsh Posté le 08-03-2005 à 15:53:47    

Salut,
 
J'obtiens le warning suivant:
 
"Warning: Call-time pass-by-reference has been deprecated - argument passed by value; If you would like to pass it by reference, modify the declaration of [runtime function name](). If you would like to enable call-time pass-by-reference, you can set allow_call_time_pass_reference to true in your INI file. However, future versions may not support this any longer. in c:\program files\easyphp1-7\www\RTF\class_rtf.php on line 404"
 
Je comprend que ca concerne le passage par reference de variable a une fonction mais je ne comprend pas comment le supprimer.
 
Si qlq a une idée?
 
merci d'avance

Reply

Marsh Posté le 08-03-2005 à 15:53:47   

Reply

Marsh Posté le 08-03-2005 à 15:59:03    

sans le code ça va être difficile...

Reply

Marsh Posté le 08-03-2005 à 16:03:25    

DSL:
Appel de la fonction:
  $this->set_style(&$style,&$fin_style,$option);
La fonction:
function set_style(&$style,&$fin_style,$val){
  if (preg_match("/(.*?)italic(.*?)/mi", $val)){
      $style.="\\i";
      $fin_style.="\\i0";
  }
 
  if (preg_match("/(.*?)bold(.*?)/mi",$val)){
      $style.="\\b";
      $fin_style.="\\b0";
  }
 
  if (preg_match("/(.*?)underline(.*?)/mi", $val)){
      $style.="\\ul";
      $fin_style.="\\ul0";
  }
  if (preg_match("/(.*?)line-through(.*?)/mi", $val)){
      $style.="\\strike";
      $fin_style.="\\strike0";
  }
}

Reply

Marsh Posté le 08-03-2005 à 16:05:09    

$this->set_style($style,$fin_style,$option);  
 
pour ton appel


---------------
from here and there -- \o__________________________________ -- la révolution de la terre, en silence
Reply

Marsh Posté le 08-03-2005 à 16:12:41    

merci: Ha les copier-coller c bien mais ca crée des erreurs...

Reply

Marsh Posté le 08-03-2005 à 23:11:51    

En fait il faut faire "l'inverse".
 
Avant on definissait le passage par reference dans la declaration de la fonction. Mais apparment c'est deprecie.
Si neanmoins tu veux toujours passer tes var par ref, c'est possible, mais faut le faire au moment de l'appel de la fonction.
 

Code :
  1. // avant
  2. function foo(&$bar) {
  3.   echo $bar;
  4. }
  5. $toto="titi";
  6. toto($toto);
  7. //maintenant :
  8. function foo($bar) {
  9.   echo $bar;
  10. }
  11. $toto="titi";
  12. toto(&$toto);

Reply

Marsh Posté le 09-03-2005 à 14:47:58    

je préfère la manière old school

Reply

Marsh Posté le 09-03-2005 à 19:03:46    

Il n'y a pas de methode "old school" et l'autre "new shcool". C'est simplement qu'une des deux methodes est devenue depreciee ou "deprecated" en anglais.
 
Personellement je preferes egalement l'ancienne methode, non parcequ'elle est "old school", mais parceque le controle est plus facile a faire.
En effet, on a vite oublie qu'il fallait passer un argument par reference a une fonction, alors qu'avec l'ancienne methode, c'etait transparent pour "l'utilisateur" (l'utilisateur des fonctions donc :D).

Reply

Marsh Posté le 11-03-2005 à 13:51:47    

oui cerel, je disais pas que je la préfèrai juste pck'elle est old school mais au moins avec les & dans la déclaration, tu vois tout de suite de quoi tu parles et c dommage que ce soit déprécié . Je suis d'accord sur le fait qu'on peut oublier , et certaines personnes ne savent meme pas ce que c'est alors ...

Reply

Sujets relatifs:

Leave a Replay

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