W3docs

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: blue

Dans 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

  • global ne 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.
  • global ne fait rien pour les constantes ou les variables static — il s'applique exclusivement aux variables ordinaires de portée globale.
  • Dépendances cachées. Une fonction qui repose sur global peut 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 global offre 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 $GLOBALS lorsque 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.

Pratique

Pratique
Qu'est-ce qui est vrai concernant la portée des variables en PHP, d'après le contenu de l'URL spécifiée ?
Qu'est-ce qui est vrai concernant la portée des variables en PHP, d'après le contenu de l'URL spécifiée ?
Was this page helpful?