Skip to content

Superglobales et portée des variables

Objectifs pédagogiques

  • Comprendre la portée des variables (locale, globale, statique).
  • Manipuler les superglobales telles que $_GET, $_POST, $_SESSION, etc.
  • Utiliser correctement le passage par référence.

Portée des variables

En PHP, les variables ont une portée, c'est-à-dire un contexte dans lequel elles sont accessibles.

Variables locales

Une variable définie à l'intérieur d'une fonction n'est accessible que dans cette fonction :

php
function sayHello() {
  $message = "Bonjour";
  echo $message;
}

sayHello();
// echo $message; // Erreur : $message est inconnue ici

Variables globales

Une variable définie en dehors d'une fonction n'est pas accessible à l'intérieur sans déclaration explicite :

php
$message = "Salut";

function sayHello() {
  global $message;
  echo $message;
}

Variable statique

Une variable statique conserve sa valeur entre plusieurs appels de la fonction :

php
function counter() {
  static $i = 0;
  $i++;
  echo $i;
}

counter(); // 1
counter(); // 2

Superglobales

PHP fournit des tableaux associatifs spéciaux accessibles partout, sans déclaration :

NomDescription
$_GETDonnées passées via l'URL (méthode GET)
$_POSTDonnées passées via un formulaire (méthode POST)
$_REQUESTCombine $_GET, $_POST et $_COOKIE
$_SESSIONStocke les données de session
$_COOKIEAccès aux cookies
$_SERVERDonne des infos sur le serveur et la requête
$_FILESDonnées envoyées via un formulaire de type fichier
$_ENVVariables d’environnement
$_GLOBALSRéférences à toutes les variables globales

Exemple avec $_GET :

php
// URL : page.php?name=Alice
echo $_GET['name']; // Affiche "Alice"

Passage par référence

Par défaut, les variables sont passées par valeur (copie). Pour modifier la variable originale, on utilise une référence avec le symbole &.

php
function dubble(&$valeur) {
  $valeur *= 2;
}

$number = 4;
dubble($number);
echo $number; // Affiche 8

Cela peut aussi s’utiliser dans les boucles foreach :

php
$notes = [10, 12, 14];

foreach ($notes as &$note) {
  $note += 1;
}

Exercice pratique

  1. Créer un fichier scope.php
  2. Déclarer une variable $message en dehors d’une fonction
  3. Afficher cette variable depuis une fonction avec global
  4. Créer une fonction incrementer() qui utilise une variable static
  5. Créer une fonction dubble() prenant un paramètre par référence
  6. Bonus : afficher la variable $_SERVER['PHP_SELF']