OVH Cloud OVH Cloud

variables globales?

15 réponses
Avatar
BaKa
Salut,

Voila, j'aimerais créer des variables globales pour les utiliser dans
plusieurs fonctions ... (sans a chaque fois redéfinir globale $var1)

pour le moment je dois faire ça :

$var1 = "ma var";

function test1(){
globale $var1;
}

function test2(){
globale $var1;
}

Quand il n'y a qu'une variable et 2 fonctions ca va mais je dois faire ca
pour un peu + de fonction et j'aimerais savoir si il y a moyen de définir
une fois pour toute une variable globale.

Merci ;)

--
# Games Screenshots
http://www.games-screenshots.t2u.com

10 réponses

1 2
Avatar
Jean-Marc Molina
Bonjour "BaKa",

Tu aimes qu'on t'appelle Baka ? Tiens donc :)

Concernant les variables globales, elles sont à bannir, passe tes variables
en paramètres pour un meilleur contrôle.
Ça t'évitera de te tordre les neurones en cherchant une erreur ou un bogue
camouflé :

$var1 = "ma var";

function test1($var1){
echo ($var1);
}

function test2($var1){
echo ($var1);
}

Une seule règle donc :
- NE JAMAIS UTILISER DE VARIABLES GLOBALES (tant qu'on peut faire -
raisonnablement - autrement)

Par exemple c'est pour ça que les variables globales de PHP sont désormais
désactivées, on utilise $_POST, $_GET pour un meilleure contrôle.

JM

--
Clé AntiPourriel : PASUNPOURRIEL (ne pas retirer)
Avatar
S. Pau
BaKa wrote:
Salut,

Voila, j'aimerais créer des variables globales pour les utiliser dans
plusieurs fonctions ... (sans a chaque fois redéfinir globale $var1)

pour le moment je dois faire ça :

$var1 = "ma var";

function test1(){
globale $var1;
}

function test2(){
globale $var1;
}

Si tes fonctions ont un lien logique, utilise les classes:

class uneClasse
{
var $var1;

function test1()
{
$var1 = 47;
}
function test2()
{
if ($var1 == 47)
{
.............
}
}
};

Avatar
satch
Salut,

Voila, j'aimerais créer des variables globales pour les utiliser dans
plusieurs fonctions ... (sans a chaque fois redéfinir globale $var1)

pour le moment je dois faire ça :

$var1 = "ma var";

function test1(){
globale $var1;
}

function test2(){
globale $var1;
}

Quand il n'y a qu'une variable et 2 fonctions ca va mais je dois faire ca
pour un peu + de fonction et j'aimerais savoir si il y a moyen de définir
une fois pour toute une variable globale.

Merci ;)
En utilisant le tableaux de golbales $_GLOBALS[], elles sont dispos partout

normalement ! Mais attention avec les variables globales si tu en as
vraiment beaucoup, écrasezr une variable par une autre est vite arrivé !

André.

Avatar
John Gallet
- NE JAMAIS UTILISER DE VARIABLES GLOBALES (tant qu'on peut faire -
raisonnablement - autrement)


"Dans mes bras" (tm).


Par exemple c'est pour ça que les variables globales de PHP sont désormais
désactivées, on utilise $_POST, $_GET pour un meilleure contrôle.


Là en revanche tu dis des âneries, les variables passées en arguments
n'ont jamais été disponibles par dans une fonction. Et justement
$_GET/POST/REQUEST, elles, si :-)

a++
JG

Avatar
dominique
Jean-Marc Molina wrote:
Concernant les variables globales, elles sont à bannir, passe tes variables
en paramètres pour un meilleur contrôle.


c'est vrai qu'il faut eviter les variables globales, mais quel est
l'interet de passer la meme variable en parametre de beaucoup trop de
fonctions ?
Oui c'est vrai on peut creer un objet et faire de ces fonctions des
methodes de l'objets et de la ou les variables des parametres de l'objet.
Je pense que je prefererais cette methode a la methode je repete une
variable en parametre de toutes mes fonctions.

Donc si tu aimes bien les objets et le manipuler => objet
Sinon tu peux jetter 1 oeil du cote de define. Par contre tu ne pourras
pas modifier cette variable

--
Dom

Avatar
- Sebastien -
BaKa écrivait :

Salut,

Voila, j'aimerais créer des variables globales pour les utiliser dans
plusieurs fonctions ... (sans a chaque fois redéfinir globale $var1)

pour le moment je dois faire ça :

$var1 = "ma var";



function test1(){
globale $var1;
}


Je crois déjà que c'est global sans le e à la fin (pas testé).

Tu passes ta variable à la fonction :


function test1($lavar1) {
script...
}

Et tu appelles la fonction comme ça : test1($var1);


--
Sébastien.
Webmaster www.coste-du-rhone.com
Grands vins des Cotes du Rhone
(blabla dangereux santé et tout ça)

Avatar
Lascap
oui, j'aimerais bien, moi aussi!! définir un super array, en fait, qui
ressemble aux $_POST ou autre $_SESSION
pour l'instant, moi je défini un tableau $globales = array();
dans lequel je colle mes variables globales
$globales["var1"] = "vivemoi";
$globales["var2"] = "et les bo modérateurs de ce forum";
$globales["var3"] = "n'importe quoi, moi, vers 1h du mat ca va plus";

du coup, je n'ai que une déclaration à faire dans mes fonctions

global $globales;

mais bon, ça serait encore plus simple si on pouvait définir un nouveau
super array, voire récupérer un super array existant (mais bon, là c'est pas
très propre...)

Lascap

"BaKa" a écrit dans le message de news:
3f7985f5$0$10704$
Salut,

Voila, j'aimerais créer des variables globales pour les utiliser dans
plusieurs fonctions ... (sans a chaque fois redéfinir globale $var1)



Avatar
Savut
la meilleur methodologie en tant que programmeur, c'est de passer en
parametre
$var1 = "ma var";
function test1($var1){
echo ($var1);
}

Pis les variable $_POST[], $_GET[], je pense vous 2 avant ne savez pas trop
c quoi. En fait ils sont global, mais c'est que on utilise ca plutot que
global et $_GLOBAL[] afin de programmer plus securitairement et plus propre.

Comme la plupart le dis ici, utilise jamais, mais jamais global $mavar car
c'est mal code de meme. De plus que c inutile car on peut faire ca autrement
de facon plus propre.


"John Gallet" a écrit dans le message de
news:
- NE JAMAIS UTILISER DE VARIABLES GLOBALES (tant qu'on peut faire -
raisonnablement - autrement)


"Dans mes bras" (tm).


Par exemple c'est pour ça que les variables globales de PHP sont
désormais


désactivées, on utilise $_POST, $_GET pour un meilleure contrôle.


Là en revanche tu dis des âneries, les variables passées en arguments
n'ont jamais été disponibles par dans une fonction. Et justement
$_GET/POST/REQUEST, elles, si :-)

a++
JG



Avatar
John Gallet
Bonsoir,

c'est vrai qu'il faut eviter les variables globales, mais quel est
l'interet de passer la meme variable en parametre de beaucoup trop de
fonctions ?


C'est quoi "beaucoup" ? Moi en dessous de 15, ça me choque pas plus que
ça.

Sinon tu peux jetter 1 oeil du cote de define. Par contre tu ne pourras
pas modifier cette variable


Ceci est un autre débat, c'est la différence entre une variable et une
constante.

JG

Avatar
Jean-Marc Molina
mais bon, là c'est pas très propre


En effet ces "array" sont un peu des pots-pourris, vous pouvez y mettre
toutes les variables de votre site ou application si vous voulez, mais au
final vous ne savez plus qui utilise quoi et surtout comment ou pourquoi.

Une fonction se définie par son nom, des paramètres, une valeur de retour et
un corps. Pas par une liste de variables globales qu'on utilise
aléatoirement en fonction de temps qu'il fait ou de son humeur, ça ne fait
partie d'aucune méthode de programmation connue ^^.

JM

--
Clé AntiPourriel : PASUNPOURRIEL (ne pas retirer)

1 2