Développement web avancé
Variables (PHP)
2025 - 2026
Variables
Existence d'une variable
Dans plusieurs cas de figure, il est essentiel de pouvoir vérifier l'existence d'une variable. Nous allons parler de ces 3 fonctions :
- isset( )
- empty( )
- array_key_exists( )
isset( )
Détermine si une variable est déclarée et est différente de null. Retourne un boolean.
$a = 0;
$b = null;
// Retourne true
isset( $a );
// Retourne false (null)
isset( $b );
// Retourne false (undefined)
isset( $c );
empty( )
Détermine si une variable est vide ou si sa valeur équivaut à false (falsy value). Retourne un boolean.
$a = 0;
$b = null;
// Retourne true (falsy value)
empty( $a );
// Retourne l'inverse de true = false (falsy value)
!empty( $a );
// Retourne true (falsy value)
empty( $b );
array_key_exists( )
Vérifie si une clé est déclarée dans un tableau, la valeur peut être null contrairement à isset. La fonction prend 2 paramètres, le premier la clé à trouver, le second le tableau dans lequel rechercher :
Recherche uniquement dans les clés de la première dimension. Les clés imbriquées dans les tableaux multidimensionnels ne seront pas trouvées.$pokemon = [
'name' => 'mew',
'gender' => null
];
// Retourne true
array_key_exists( 'gender', $pokemon );
// Retourne false (falsy value)
isset( $pokemon[ 'gender' ] );
Opérateur ternaire
L'opérateur ? : est la version courte d'un if/else :
// Est-ce que la condition est vraie ? si oui : si non
(condition) ? (if true) : (else)
$a = 0;
// empty() avec if/else
if( empty( $a ) ){
echo "Vide ou falsy";
} else {
echo "N'est pas vide ou falsy";
}
// La même condition avec l'opérateur ternaire
echo empty( $a ) ? "Vide ou falsy" : "N'est pas vide ou falsy";
Opérateur de fusion Null
L'opérateur de fusion null ou Null Coalescing Operator ?? est une autre version courte d'un if/else avec une condition isset :
// Si expresion1 est null ou n'existe pas, retourne expression2, si non retourne expression1
(expression1) ?? (expression2)
$a = null;
// isset() avec if/else
if( isset( $a ) ){
echo "Défini";
} else {
echo "Non défini";
}
// La même condition avec l'opérateur ternaire
echo $a ?? "Non défini";
// Ne créé pas d'erreur
echo $c ?? "Non défini";
Portée des variables
La portée des variables ou variable scope est le contexte dans lequel elle est définie. En PHP il existe une portée de fonction, et une portée globale. Toute variable définie en dehors d'une fonction est limitée à la portée globale.
Autrement dit, une variable ne peut pas être lue en dehors de sa portée.$myPokemon = "pikachu";
function getHp() {
$hp = 100;
// Retourne null
var_dump( $myPokemon );
}
getHp();
// Retourne null
var_dump( $hp );
Par contre on peut très bien passer un paramètre dans notre fonction, et retourner une valeur pour communiquer entre les portées :
$myPokemon = "pikachu";
function getHp( $pokemon ) {
$hp = 100;
if( $pokemon === "pikachu" ){
$hp = 50;
}
return $hp;
}
$hp = getHp( $myPokemon );
// Retourne 50
var_dump( $hp );
Le mot clé global
Le mot-clé global permet d'accéder à des variables globales dans d'autres portées locales, comme dans des fonctions. On peut mentionner plusieurs variables en les séparant par une virgule :
$a = 10;
$b = 20;
function somme() {
global $a, $b;
return $a + $b;
}
$c = somme();
// Retourne 30
var_dump( $c );
Suppression d'une variable
La fonction unset( ) détruit une variable ou d'un élément dans un tableau. Cela ne détruira pas une variable globale dans une fonction, mais uniquement sa portée locale.
$array = [ 'name' => 'pikachu' ];
$a = 10;
// Retourne 10
var_dump( $a );
// Retourne "pikachu"
var_dump( $array[ 'name' ] );
unset( $a );
unset( $array[ 'name' ] );
// Retourne null
var_dump( $a );
var_dump( $array[ 'name' ] );
$a = 10;
function destroy() {
global $a;
// Retourne 10
var_dump( $a );
unset( $a );
// Retourne null
var_dump( $a );
}
// Retourne 10
var_dump( $a );
destroy();
// Retourne 10, existe toujours
var_dump( $a );
Superglobales
Plusieurs variables prédéfinies en PHP sont superglobales, ce qui signifie qu'elles sont disponibles quel que soit le contexte. Voici une liste des plus communes :
- $_SERVER : accède aux données relatives à l'URI, méthode, en-têtes de la requête HTTP, domaine, etc.
- $_GET : récupère les valeurs passées dans les paramètres de l'URL.
- $_POST : récupère les valeurs envoyées depuis une méthode POST.
- $_SESSION : données liés à la session actuelle.
define( )
Il est parfois utile dans vos programmes de définir une valeur à un endroit et de l'utiliser plusieurs fois dans le programme.
Si par la suite, vous voulez changer cette valeur, vous ne devez la changer qu'à un seul endroit.
De plus, cela facilite très souvent la lecture de votre code.
Une constante peut être définie à n'importe quel endroit de votre code. Généralement, on privilégie la définition au début du fichier PHP.
<?php
define( 'POKEMON', 'Pikachu' );
// …
echo POKEMON;
?>
Sprint 0