Page 1 sur 1

problème de return variable via fonction

Posté : 13 août 2010, 14:40
par Ehplod
Salut,

Ma question du jour concerne le renvoi de variable via une fonction.

Le 1 ne fonctionne pas, le echo n'affiche rien.
Le 2 fonctionne echo affiche "coucou".
Pourquoi ?
Je précise que cela fonctionne dans le cas 1 si j'appelle la fonction ainsi :

Code : Tout sélectionner

$aff = testaff(); echo $aff;
function testaff() {
$vartest = "coucou";
return $vartest
}
testaff();
echo $vartest;
function testaff() {
$_SESSION['vartest'] = "coucou";
return $_SESSION['vartest']
}
testaff();
echo $_SESSION['vartest'];

Re: problème de return variable via fonction

Posté : 13 août 2010, 14:59
par dev3
Bonjour,

C'est lié à la portée d'une variable, dans ton exemple 1
$vartest
est une variable locale à la fonction
testaff()
elle est donc inaccessible à l'exterieur de ta fonction
-> http://www.manuelphp.com/php/language.v ... .scope.php

Re: problème de return variable via fonction

Posté : 13 août 2010, 15:23
par Ehplod
Ah ouais...

Donc en la définissant comme global dans la fonction, je devrais la retrouver ensuite sans être obliger de la passer en variable de session.

Merci

Re: problème de return variable via fonction

Posté : 13 août 2010, 15:34
par Lirio
Oui .. sachant que les globals sont globalement à proscrire ^^
Pourquoi ne pas faire tout simplement
function testaff()
{
    return "coucou";
}

$vartest = testaff();

echo $vartest;

Re: problème de return variable via fonction

Posté : 13 août 2010, 16:29
par Ehplod
Ah ?
Pourquoi sont-elle à proscrire ? Juste pour le risque de modifier ailleurs la variable mis en global ?
Dans ce cas, pas de soucis, aucune de mes variable n'a jamais le même nom.

Et le fait que je n'appelle pas ma fonction via variable = fonction est juste pour des raisons pratiques.

Re: problème de return variable via fonction

Posté : 13 août 2010, 17:49
par Lirio
Pourquoi ne pas utiliser les globals ?
Parce que ça créer des dépendances monstrueuses, qui sont généralement difficilement repérable dans les scripts.
Parce que l'on a finalement assez peu de contrôle dessus.

Généralement, on préfère l'utilisation de registre (cf Hoa Registry ou Zend Registry ) ou encore l'injection de dépendance.

Re: problème de return variable via fonction

Posté : 14 août 2010, 11:33
par Ehplod
Hummm, je vais regarder ça.

Merci.