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 iciVariables 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(); // 2Superglobales
PHP fournit des tableaux associatifs spéciaux accessibles partout, sans déclaration :
| Nom | Description |
|---|---|
$_GET | Données passées via l'URL (méthode GET) |
$_POST | Données passées via un formulaire (méthode POST) |
$_REQUEST | Combine $_GET, $_POST et $_COOKIE |
$_SESSION | Stocke les données de session |
$_COOKIE | Accès aux cookies |
$_SERVER | Donne des infos sur le serveur et la requête |
$_FILES | Données envoyées via un formulaire de type fichier |
$_ENV | Variables d’environnement |
$_GLOBALS | Ré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 8Cela peut aussi s’utiliser dans les boucles
foreach:
php
$notes = [10, 12, 14];
foreach ($notes as &$note) {
$note += 1;
}Exercice pratique
- Créer un fichier
scope.php - Déclarer une variable
$messageen dehors d’une fonction - Afficher cette variable depuis une fonction avec
global - Créer une fonction
incrementer()qui utilise une variablestatic - Créer une fonction
dubble()prenant un paramètre par référence - Bonus : afficher la variable
$_SERVER['PHP_SELF']