8796 sujets

Développement web côté serveur, CMS

Hello à tous,

Je viens de perdre 2h à cause d'une portée de variable.
Quelqu'un peut me dire pourquoi ma fonction affichage ne voit pas ma variable $message ?

<?php
$message="test";

function affichage(){
	echo $message;
	}

affichage();
?>


Je sais c'est pitoyable comme question mais là je me tape la tête Smiley biggol
Merci à celui qui me remettra dans le droit chemin...
Modifié par AspiGeek (14 Jul 2009 - 23:37)
Bonjour,

pour une fonction d'affichage, on passe plutôt un paramètre


<?php
function affichage($message){
	echo $message;
	}

affichage('test');
?>


dur de bosser un 14 juillet Smiley smile
Merci pour tes liens Tony Monast Smiley smile

Ca met en avant le fossé dans lequel je me suis perdu à savoir que la portée est différente en langage C et AS...d'où mon pétage de plomb !

Par contre j'avais vérifié sur d'autres sites avant d'écrire et je crois que cette nuance des variables globales est loin d'être mise en avant.

Merci Bzh pour ton conseil mais je vais préféré la méthode décrite dans le 2ème lien de Tony Monast...ça fait moins bidouille (mon code était un exemple) Smiley cligne
Bon aller je vais voir le z'oli feu d'artifice...

Merci à vous deux.
Modifié par AspiGeek (14 Jul 2009 - 22:10)
Modérateur
Hello AspiGeek, Smiley smile

Je rajouterai également que tu peux faire ceci :


function uneFonction(){
	$parametreTab = func_get_args();
	$parametre = func_get_arg(0);
	$nbParametre = func_num_args();
	$br="<br />";
	
	echo "Il y a ".$nbParametre." paramètre(s) dans cette fonction".$br;
	
	echo ($nbParametre > 1)? $parametre.$br.$parametreTab[1].$br : $parametre.$br;
}

$uneVar = "un paramètre";
uneFonction($uneVar);
echo "<hr />";
uneFonction($uneVar,"Un autre paramètre");


Bonne Soirée à toi. Smiley smile
Modifié par Nolem (15 Jul 2009 - 03:17)
Salut Nolem,

Ton code m'a fait mal à la tête Smiley biggol , trop compliqué pour moi...
Je me suis contenté de global $variable1, $variable2 etc...

J'ai beau relire ton code mais j'avoue je suis largué...en même temps je suis loin d'être un pro de php.

Merci quand même Smiley cligne
Modérateur
Hello,

Pour te commenter le code :



//creation de la fonction sans une liste d'arguments prédéfini ou pas (uneFonction){
function uneFonction(){

    /*initialisation d'un array ($parametreTab). Cette variable va récupérer la liste des arguments 
    avec leurs valeurs lorsque la fonction est appelée;*/
    $parametreTab = func_get_args();

    /*initialisation d'une variable ($parametre). Cette dernière va récupérer la valeur du paramètre 
    prédéfini dans la fonction lorsqu'elle est appelée bien sûr;*/
    $parametre = func_get_arg(0);

    /*initialisation d'une variable integer ($parametre). Cette dernière va récupérer le nombre de 
    paramètres de la fonction lorsqu'elle est appelée;*/
    $nbParametre = func_num_args();


    /*initialisation d'une variable string ($br). Elle fait un saut de ligne au rendu d'affichage;*/
    $br = "<br />"; 

    /*affichage de la ligne : "Il y a "+nombre Parametres+" paramètre(s) dans cette fonction"+saut de 
    ligne";*/
    echo "Il y a ".$nbParametre." paramètre(s) dans cette fonction".$br;

    /*affichage de la ligne = SI (nombre Parametres EST SUPÉRIEUR À 1) ceci SINON cela ;*/
    echo ($nbParametre > 1)? $parametre.$br.$parametreTab[1].$br : $parametre.$br;
}

//initialisation d'une variable string (uneVar);
$uneVar = "un paramètre";

//appelle la fonction et prend 1 paramètre en compte;
uneFonction($uneVar));

//affichage bordure html (<hr />";)
echo "<hr />";

//appelle la fonction et prend 2 paramètres en compte;
uneFonction($uneVar,"Un autre paramètre"));



bonne soirée
Merci Nolem pour ces explications.

En fait c'est pas le code que je ne comprenais pas mais le pourquoi du comment, je suis toujours largué Smiley cligne

Par contre l'utilisation de func_get_args() et func_num_args() est intéressante, c'est peut être ce que tu voulais montrer aussi Smiley sweatdrop

Merci encore et @+