Gestion des variables PHP
Apprenez à créer, inspecter, copier et supprimer des variables PHP : isset, gettype, settype, références et variables dynamiques.
Introduction
La gestion des variables désigne l'ensemble des techniques utilisées pour créer, inspecter, copier et supprimer les valeurs manipulées par votre script PHP. Cette page va au-delà de la simple affectation d'une valeur : elle couvre la vérification de l'existence d'une variable (isset), la découverte et la modification de son type (gettype / settype), la création de références, et les fonctionnalités plus dynamiques offertes par PHP — les variables variables et les fonctions variables.
Si vous n'avez jamais déclaré de variable PHP, commencez par PHP Variables et PHP Data Types, puis revenez ici pour les techniques de gestion.
Déclarer et affecter des variables
En PHP, un nom de variable commence par un signe dollar ($) suivi d'une lettre ou d'un underscore. Vous n'avez pas à déclarer un type — PHP l'infère à partir de la valeur que vous affectez avec l'opérateur =.
<?php
$name = "John"; // string
$age = 30; // integer
$price = 19.99; // float
$active = true; // booleanPHP est dynamiquement typé : une même variable peut contenir une string maintenant et un nombre plus tard. La variable prend simplement le type de la dernière valeur affectée.
Interpolation de chaînes
À l'intérieur des chaînes entre guillemets doubles (et des heredocs), PHP remplace une variable par sa valeur. Les chaînes entre guillemets simples sont traitées littéralement et n'effectuent pas d'interpolation.
Vérifier et supprimer des variables
Avant de lire une variable qui pourrait ne pas exister, testez-la. Ces trois fonctions constituent le cœur d'une gestion sûre des variables :
| Fonction | Retourne true quand... |
|---|---|
isset($var) | la variable existe et n'est pas null |
empty($var) | la variable est non définie, null, 0, "", "0", false, ou [] |
unset($var) | (pas de retour) détruit la variable pour que isset devienne false |
<?php
$user = null;
var_dump(isset($user)); // bool(false) — null counts as "not set"
$count = 0;
var_dump(empty($count)); // bool(true) — 0 is "empty"
$temp = 10;
unset($temp);
var_dump(isset($temp)); // bool(false) — destroyedisset est la protection que vous utilisez le plus souvent, notamment avec les superglobales comme $_GET et $_POST où une clé peut être absente.
Inspecter et modifier les types
Parce que PHP infère les types, vous avez parfois besoin de savoir quel type une valeur possède actuellement, ou de forcer une conversion.
<?php
$price = 19.99;
echo gettype($price); // double (PHP's name for float)
$input = "42";
settype($input, "integer");
echo $input + 8; // 50 — now a real integer, not the string "42"Utilisez gettype pour obtenir un nom de type lisible et settype (ou un cast comme (int)) pour convertir en place. Pour les comparaisons, préférez les fonctions sensibles au type : is_int(), is_string(), is_array(), etc.
Gestion avancée des variables
Une fois les bases maîtrisées, PHP propose trois techniques dynamiques supplémentaires. Utilisez-les avec parcimonie — elles sont puissantes mais peuvent nuire à la lisibilité.
Références de variables
Une référence fait pointer deux noms vers la même valeur sous-jacente. Affectez avec =& et tout changement effectué via l'un des noms est visible via l'autre.
<?php
$count = 1;
$alias =& $count; // $alias is now another name for $count
$alias = 5;
echo $count; // 5 — changed through the referenceLes références sont particulièrement utiles lors du passage d'arguments à des fonctions par référence (function f(&$x)), permettant à la fonction de modifier la variable de l'appelant.
Variables variables
Une variable variable utilise la valeur d'une variable comme nom d'une autre. La syntaxe $$ lit la variable intérieure pour construire le nom extérieur.
<?php
$var = "greeting";
$$var = "Hello"; // creates $greeting
echo $greeting; // HelloCela peut être pratique pour les noms de champs dynamiques, mais un tableau associatif est presque toujours plus clair et plus sûr.
Fonctions variables
Si une variable de type string contient un nom de fonction, l'ajout de () appelle cette fonction de manière dynamique.
<?php
$fn = "strlen";
echo $fn("Hello World"); // 11Cela permet de créer des tables de dispatch et des callbacks simples. PHP moderne préfère généralement les callables de première classe ou les closures, mais les fonctions variables restent valides et performantes.
Bonnes pratiques
- Utilisez des noms significatifs.
$counterou$totalPriceexprime l'intention bien mieux que$xou$tmp. - Initialisez avant d'utiliser. La lecture d'une variable non définie génère un avertissement ; définissez une valeur par défaut ou protégez avec
isset(). - Évitez les globales. Passez les valeurs en arguments de fonction ou encapsulez l'état dans des objets plutôt que de vous appuyer sur
global. Consultez Variables Scope pour comprendre l'importance de l'isolation de portée. - Préférez les tableaux aux variables variables. Ils sont plus faciles à itérer, déboguer et raisonner.
- Utilisez les déclarations de type. Les paramètres typés (
function setAge(int $age)) détectent les erreurs tôt et rendent le code auto-documenté.
Résumé
La gestion des variables PHP va au-delà de la simple affectation : elle inclut la vérification de l'existence avec isset/empty, la suppression de valeurs avec unset, l'inspection et la conversion de types avec gettype/settype, et les outils dynamiques — références, variables variables et fonctions variables. Privilégiez les techniques simples et explicites au quotidien, et réservez les outils dynamiques aux rares cas qui en ont réellement besoin.