global
Le mot-clé "global" en PHP permet d'accéder à une variable déclarée hors de la fonction courante. Découvrez la syntaxe et les exemples d'utilisation.
Le mot-clé PHP "global" : guide complet
En PHP, les variables ont une portée limitée — une variable créée à l'intérieur d'une fonction est locale à cette fonction et ne peut pas accéder aux variables définies dans le script principal, et vice versa. Le mot-clé global comble cet écart : il indique à une fonction d'utiliser la même variable qui existe dans la portée globale (au niveau du script) au lieu d'en créer une nouvelle locale.
Cette page couvre la syntaxe de global, le fonctionnement de la portée des variables, la relation entre global et la superglobale $GLOBALS, des exemples pratiques, les pièges courants, et les alternatives plus propres.
Comprendre la portée des variables
Par défaut, une variable définie en dehors d'une fonction n'est pas visible à l'intérieur de celle-ci :
<?php
$message = "Hello";
function show() {
echo $message; // Notice: Undefined variable $message
}
show();La fonction show() n'a pas accès à $message car $message vit dans la portée globale et show() possède sa propre portée locale distincte. Le mot-clé global est un moyen de donner à la fonction accès à cette variable externe.
Syntaxe
Le mot-clé "global" est utilisé pour accéder à une variable globale en PHP. Voici la syntaxe de base pour utiliser le mot-clé "global" :
La syntaxe PHP de global
<?php
$variableName = "initial value";
function functionName() {
global $variableName;
// code to be executed
}Dans cet exemple, le mot-clé global est utilisé pour accéder à une variable appelée $variableName déclarée en dehors de la fonction courante. Une fois déclarée globale, toute modification apportée à $variableName par la fonction est répercutée dans la portée externe, et toute modification effectuée à l'extérieur est visible à l'intérieur de la fonction.
Vous pouvez également importer plusieurs variables globales à la fois en les séparant par des virgules :
<?php
$x = 5;
$y = 10;
function addThem() {
global $x, $y;
echo $x + $y; // Output: 15
}
addThem();Exemples
Voici quelques exemples pratiques illustrant l'utilisation du mot-clé "global" :
Exemples de global en PHP
<?php
// Example 1
$counter = 0;
function incrementCounter()
{
global $counter;
$counter++;
}
incrementCounter();
echo $counter . PHP_EOL; // Output: 1
// Example 2
$color = "red";
function changeColor()
{
global $color;
$color = "blue";
}
changeColor();
echo $color; // Output: blueDans ces exemples, nous utilisons le mot-clé global pour accéder à des variables déclarées en dehors de la fonction courante et modifier leurs valeurs.
global vs. le tableau $GLOBALS
PHP expose également chaque variable globale via la superglobale $GLOBALS — un tableau associatif indexé par le nom de la variable. Contrairement à global, $GLOBALS est disponible dans toutes les portées sans déclaration préalable, de sorte que les deux fonctions suivantes sont équivalentes :
<?php
$total = 100;
function withGlobal() {
global $total;
$total += 1;
}
function withGlobals() {
$GLOBALS['total'] += 1;
}
withGlobal();
withGlobals();
echo $total; // Output: 102$GLOBALS est pratique lorsque vous n'avez besoin que d'une ou deux variables externes, car il évite une ligne de déclaration global séparée. Les deux approches lisent et écrivent dans les mêmes variables sous-jacentes.
Pièges courants
globalne fonctionne que pour les variables qui existent déjà ou que vous souhaitez créer dans la portée globale. Une faute de frappe dans le nom de la variable crée silencieusement une variable globale différente au lieu de déclencher une erreur.- Il doit être déclaré avant d'utiliser la variable. Déclarez
global $name;en haut de la fonction, avant toute référence à$name. globalne fait rien pour les constantes ou les variablesstatic— il s'applique exclusivement aux variables ordinaires de portée globale.- Dépendances cachées. Une fonction qui repose sur
globalpeut se comporter différemment selon l'état du script, ce qui la rend plus difficile à tester de manière isolée.
Avantages
L'utilisation du mot-clé "global" présente plusieurs avantages, notamment :
- Accès aux variables globales : le mot-clé "global" vous permet d'accéder et de modifier des variables déclarées en dehors de la fonction ou de la classe courante.
- Note sur la maintenabilité : bien que
globaloffre un accès direct aux variables de portée externe, son utilisation excessive peut rendre le code plus difficile à déboguer et à tester. Le développement PHP moderne préfère généralement passer les variables en paramètres de fonction, utiliser l'injection de dépendances, ou accéder au tableau superglobal$GLOBALSlorsque c'est nécessaire.
Conclusion
En conclusion, le mot-clé "global" permet aux développeurs PHP d'accéder à des variables déclarées en dehors de la fonction ou de la classe courante. Bien qu'il puisse être utile pour des scripts rapides ou du code hérité, les bonnes pratiques PHP modernes recommandent de limiter son utilisation afin d'éviter un couplage fort et des problèmes de maintenabilité. Pour une meilleure architecture, envisagez de passer les variables en paramètres, d'utiliser l'injection de dépendances, ou de tirer parti du tableau superglobal $GLOBALS.
Pour approfondir le sujet, consultez la portée des variables PHP, le mot-clé static pour les variables qui persistent entre les appels, et les variables PHP en général.