Page 1 sur 1

mettre un variable defined en global dans une function

Posté : 16 févr. 2012, 23:28
par two3d
Bonsoir,

comment mettre une variable qui est préalablement définie par la function define() en global dans une fonction ?

Exemple:
define("MA_VAR_DEFINED","coucou");
function mafunction() {
  global MA_VAR_DEFINED;
  ...
}
l'erreur retournée est:

Code : Tout sélectionner

Parse error: parse error, expecting `T_VARIABLE' or `'$'' in...

Re: mettre un variable defined en global dans une function

Posté : 17 févr. 2012, 00:06
par Thibaud C
define("MA_VAR_DEFINED","coucou");
$unevar=MA_VAR_DEFINED
function mafunction() {
  global $unevar;
  ...
}
?
Mais il me semble que les constantes sont accessibles depuis les fonctions étant donné que les constantes sont du "superglobal" :/

Re: mettre un variable defined en global dans une function

Posté : 17 févr. 2012, 00:33
par two3d
en effet, pas besoin de le passer en global, il le reconnait sans, je viens de testé
<?php
define("MA_VAR","coucou");
function test() {
	echo MA_VAR;
}
test();
?>
Merci

déclarer dans une fonction une variable globale

Posté : 17 févr. 2012, 08:41
par sirakawa
au passage,
define : définit une constante, pas une variable.
<?PHP
define ("CO", 12);
$va_g = 12;
$va =1;
function test ()
{
	global $va_g;
	// commenter et décommenter la ligne ci-dessous
	$va =0;
	// commenter et décommenter la ligne ci-dessous	
	//CO = 14;
	// commenter et décommenter la ligne ci-dessous	
	//define ("CO", 241);
	echo '<br /> const: ', CO, ' va_g: ', $va_g, ' va : ' , $va;
	$va = $va_g+2;
	echo ' <br />const: ', CO, ' va_g: ', $va_g, ' va : ' , $va;
	$va_g = $va_g+4;
	echo ' <br /> const: ', CO, ' va_g: ', $va_g, ' va : ' , $va;		
}
echo ' <br /> avant appel de fonction, const: ', CO, ' va_g: ', $va_g, 'va : ' , $va;		
test();
echo '<br />après appel de fonction const: ', CO, ' va_g: ', $va_g, 'va : ' , $va;		
?>

Re: mettre un variable defined en global dans une function

Posté : 17 févr. 2012, 10:46
par two3d
D'accord mais je vois pas trop l'intérêt de ta function test() là

Re: mettre un variable defined en global dans une function

Posté : 18 févr. 2012, 23:47
par sirakawa
La fonction test ne montre que la différence de comportement entre variable et constante dans une fonction, et l'intérêt de global, ce que le question initiale montrait que tu n'avais pas compris.
Elle montre au passage que les variables déclarées dans une fonction lui sont locales et inconnues du programme appelant, ce qui est assez important pour une fonction