[fonction] Paramètres par référence

Répondre
mobman02
mobman02
Déconnecté
http://damienalexandre.fr/
Bonjour à tous,
j'ai un soucis en Local (easyPHP 1.8.0.1) avec une fonction perso,
pour laquel je suis semble t'il obligé d'utilisé des variables passé en référence.

En faite j'ai une fonction qui me donne deux variables :
  1. function get_smileys($pattern,$repl) {
  2. $pattern = array(":o", ":D");
  3. $repl = array("s/bigeek.gif", "s/biggrin.gif");
  4. } 

Comme je n'arrivais pas a rendre ses variable accessible (avec global) dans une autre fonction,
j'ai changé de tactique et j'appel celle ci avec des références pour modifier donc les deux variables (que je défini avant).
  1. get_smileys(&$pattern,&$repl); 


Seulement voilà, apparemment sa passe pas bien, ou alors ça va bientôt plus passer du tous, voici le message d'erreur :
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:\monfichier


Voilà alors si vous connaissez la solution a ce probléme :/
Ou si vous pouviez me donner un moyen de rendre mes variables $pattern et $repl accessible partout...

Voilà merci bien ;)
LA GLOBULE
LA GLOBULE
Déconnecté
111 111 111 x 111 111 111 = 12 345 678 987 654 321
Ben le message d'erreur est du à la config de PHP qui n'autorise pas le passage par référence.

Sinon, ton truc est possible via un global, mais tu n'as pas du comprendre comment ca marchait.

Je te conseille de lire le cours sur la portée des variables.
(reviens si tu n'y arrives pas, je t'expliquerais çà plus en détail, mais je veux que tu essayes un peu par toi meme, c'est plus formateur :p)
mobman02
mobman02
Déconnecté
http://damienalexandre.fr/
Ouais je me suis renseigné,
mais donc si j'ai tous compris "global" ne permet pas de modifier une variable extérieur à une fonction... il permet juste d'utilisé cette variable.

Moi ce que je voudrais faire, c'est une fonction get_smileys() dans laquelle je créer (ou modifi) deux tableau, qui eux servirons à l'extérieur de la fonction, voir même dans d'autres fonctions !

C'est compliqué hein ^^
mobman02
mobman02
Déconnecté
http://damienalexandre.fr/
Ok ok -_-
C'est résolu,
on peut bien modifier une variable "global" en fait (c'est pas très clair dans le cour).

Et je comprenais pas pourquoi j'avait une erreur de parssage avec ça :
  1. global $pattern = array(":o", ":D");
  2. global $repl = array("s/bigeek.gif", "s/biggrin.gif"); 

En faite, apparemment on ne dois pas assigner de valeur quand on déclare une variable globale,
parce que ça
  1. global $pattern;
  2. global $repl;
  3. $pattern = array(":o", ":D");
  4. $repl = array("s/bigeek.gif", "s/biggrin.gif"); 

ça fonctionne nickel sans erreur de parsage.

Voila bon bah merci bien, j'aurais au moins appris a me servir des globales :)
LA GLOBULE
LA GLOBULE
Déconnecté
111 111 111 x 111 111 111 = 12 345 678 987 654 321
smiley
LupusMic
LupusMic
Déconnecté
Développeur récurrent, procédural et relationnel. Caustique soupe-au-lait.
Je ne crois pas qu'on a lu le même message d'erreur.

LES VARIABLES GLOBALES C'EST MAL. Ceci étant dit, il faut déclarer la fonction comme requérant des références :

  1. function get_smileys(&$pattern, &$repl) {
  2. $pattern = array(":o", ":D");
  3. $repl = array("s/bigeek.gif", "s/biggrin.gif");
  4. }
  5.  
  6. get_smileys($pattern,$repl); 


Normalement, les variables devraient être passées en référence.

Au fait, tu devrais donner la version de PHP (5 ?) plutôt que celle de EasyPHP.

À+
Répondre
Accès rapide :

Remonter Remonter
L'éditeur javascript - CSS - Gentoo - Tutoriaux PHP - Tutoriels PHP - Php - Breizh Blog