J'ai du code quelque chose comme ça:
<?
$a="localhost";
function body(){
global $a;
echo $a;
}
function head(){
global $a;
echo $a;
}
function footer(){
global $a;
echo $a;
}
?>
y a-t-il un moyen de définir la variable globale en un seul endroit et de rendre la variable $a
accessible dans toutes les fonctions à la fois? sans faire usage de global $a;
plus?
php
global-variables
global
LUMIÈRE
la source
la source
global
mot - clé, envisagez d'utiliser le$GLOBALS['a']
superglobal dans toutes les étendues ou envisagez de passer le paramètre à vos fonctions.Réponses:
Le
$GLOBALS
tableau peut être utilisé à la place:À partir du manuel :
Si vous avez un ensemble de fonctions qui nécessitent des variables communes, une classe avec des propriétés peut être un bon choix au lieu d'un global:
la source
Si la variable ne change pas, vous pouvez utiliser
define
Exemple:
la source
FOOTER_CONTENT
on tente de modifier? Est-ce juste commefinal
en Java ouconst
en C, C ++ et C #?Ajoutez vos variables dans le tableau super global $ GLOBALS comme
et l'utiliser dans le monde
ou vous pouvez utiliser des constantes accessibles tout au long du script
la source
Si une variable est déclarée en dehors d'une fonction, elle est déjà dans la portée globale. Il n'y a donc pas besoin de déclarer. Mais d'où vous appelez cette variable doit avoir accès à cette variable. Si vous appelez de l'intérieur d'une fonction, vous devez utiliser le
global
mot clé:L'utilisation d'un mot clé global en dehors d'une fonction n'est pas une erreur. Si vous souhaitez inclure ce fichier dans une fonction, vous pouvez déclarer la variable comme
global
.Vous pouvez également utiliser
$GLOBALS
. C'est un super-mondial donc il a accès partout.Selon votre choix, vous pouvez choisir l'un ou l'autre.
la source
Cette réponse est très tardive, mais ce que je fais, c'est définir une classe qui contient des booléens, des tableaux et des valeurs initiales entières en tant que variables statiques de portée globale. Toutes les chaînes constantes sont définies comme telles.
Les
static
mots-clés doivent être présents dans la classe, sinon les vars $ a, $ b et $ c ne seront pas globalement étendus.la source
Vous avez répondu à cette question dans la manière dont vous avez écrit la question - utilisez «définir». mais une fois défini, vous ne pouvez pas modifier une définition.
Alternativement, il existe des astuces avec une constante dans une classe, comme class :: constant que vous pouvez utiliser. Vous pouvez également les rendre variables en déclarant des propriétés statiques à la classe, avec des fonctions pour définir la propriété statique si vous souhaitez la modifier.
la source
Vous pouvez essayer le mot-clé
use
dans les fonctions de fermeture ou Lambdas si cela correspond à votre intention ... PHP 7.0 cependant. Ce n'est pas mieux, mais juste une alternative.démo | Info
la source
Pensons un peu différemment:
Et vous pouvez l'utiliser et le modifier comme vous le souhaitez, comme:
la source
Que faire si vous utilisez une fonction procédurale au lieu de variable et que vous les appelez n'importe où comme vous.
Je fais généralement une collection de valeurs de configuration et les mets dans une fonction avec une déclaration de retour. J'inclus simplement cela là où je dois utiliser la valeur globale et appeler une fonction particulière.
la source
$GLOBALS[]
est la bonne solution, mais puisque nous parlons d'alternatives, une fonction peut aussi faire ce travail facilement:la source
Vous ne devriez plus utiliser de globaux, ils ne sont pas disponibles en PHP 5.4.
la source