mettre un variable defined en global dans une function

Avatar du membre
Mammouth du PHP | 1564 Messages

16 févr. 2012, 23:28

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...

Eléphant du PHP | 179 Messages

17 févr. 2012, 00:06

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" :/

Avatar du membre
Mammouth du PHP | 1564 Messages

17 févr. 2012, 00:33

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

Mammouth du PHP | 2278 Messages

17 févr. 2012, 08:41

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;		
?>
Vanitas vanitatum et omnia vanitas
Mes derniers livres :
Sauvez les Mots chez BoD,
Tous les chemins mènent à ROM chez BoD

Avatar du membre
Mammouth du PHP | 1564 Messages

17 févr. 2012, 10:46

D'accord mais je vois pas trop l'intérêt de ta function test() là

Mammouth du PHP | 2278 Messages

18 févr. 2012, 23:47

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
Vanitas vanitatum et omnia vanitas
Mes derniers livres :
Sauvez les Mots chez BoD,
Tous les chemins mènent à ROM chez BoD