Les variables en PHP

Déclaration simple :

<?php
$variable = "une variable en PHP";
// Une autre variable :
$Variable = 1000;

Existence de variables, la fonction isset() :

<?php
$a = "une variable en PHP";
if(isset($a)) echo "la variable a existe";
unset($a);
echo "la variable a a été supprimée ...";

Test de variables, la fonction empty() :

<?php
$a = "une variable en PHP";
if (!empty($a)) echo " La variable existe et elle n\'est pas vide !";

Avertissement

La fonction empty() répond vrai si la variable n’existe pas et ceci sans faire aucun warning ! En outre, avant PHP 5.5, on ne peut pas l’utiliser sur autre chose que des variables (impossible d’appeller une fonction dans l’argument qu’on lui passe)

Test de variables en PHP 7 avec l’opérateur coalescent

L’opérateur Null coalescent ?? permet de simplifier certains tests d’existence de variables et d’alternatives, comme par exemple :

<?php

// $a non initialisée
$b = 143;

echo $a ?? 3; // affiche 3
echo PHP_EOL;
echo $a ?? $b ?? 7; // affiche 143
echo PHP_EOL;

Ce qui permet de limiter le recours à isset dans de nombreuses situations comme:

<?php
// Récupère la valeur de $_GET['email'] et  retourne 'nobody'
// si elle n'existe pas.
$mail = $_GET['email'] ?? 'nobody@null';
// Equivalent à:
$mail = isset($_GET['email']) ? $_GET['email'] : 'nobody@null';

// Coalescing ?? peut être chainé :
// On renvoie la première valeur définie parmi 
// $_GET['email'], $_POST['email'], et 'nobody@null.com'.
$mail = $_GET['email'] ?? $_POST['email'] ?? 'nobody@null';
echo "$mail\n";

Portée des variables :

  • Par défaut, toutes les variables sont locales

  • Leur portée se réduit à la fonction ou au bloc de leur déclaration

  • Pour déclarer une variable globale, on peut utiliser le tableau $_GLOBALS[ ]

    <?php $_GLOBALS['MaVar']="Bonjour"; ?>
    

Constantes :

<?php
define("USER","TOTO");
echo USER; // Notez l'absence de $ ici