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

Répondre
mobman02
le 11/04/2006 à 22:07
mobman02
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 :
function get_smileys($pattern,$repl) {
$pattern = array(":o", ":D");
$repl = array("s/bigeek.gif", "s/biggrin.gif");
}

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).
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 ;)
http://damienalexandre.fr/
LA GLOBULE
le 11/04/2006 à 22:55
LA GLOBULE
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
le 12/04/2006 à 18:04
mobman02
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 ^^
http://damienalexandre.fr/
mobman02
le 12/04/2006 à 20:18
mobman02
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 :
global $pattern = array(":o", ":D");
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
global $pattern;
global $repl;
$pattern = array(":o", ":D");
$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 :)
http://damienalexandre.fr/
LupusMic
le 21/04/2006 à 17:11
LupusMic
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 :

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

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.

À+
Développeur récurrent, procédural et relationnel. Caustique soupe-au-lait.
Répondre

Ecrire un message

Votre message vient d'être créé avec succès.
LoadingChargement en cours