– Les variables en PHP –

En PHP, les variables sont représentées par un signe dollar « $ » suivi du nom de la variable (celle-ci doit obligatoirement commencer par une lettre ou un _). Les variables sont sensibles à la casse, ce qui veut dire que $x != $X. Il est inutile de typer les variables en PHP, cela dit on peut maintenant le faire depuis la version 7 de PHP (2016). Le rôle d’une variable est forcément limité dans le temps. Elle a pour but de stocker des données pendant la durée (max) de l’exécution de la page.

Le principe de fonctionnement des variables est ensuite le même que le langage C. Pour assigner une valeur à une variable il suffit de faire soit par assignation simple, ou par référence.

Dans notre cas 1, $a vaut 10. $b vaut la valeur à l’instant t de $a. Dans notre cas 2, $b vaudra la valeur de $a, même si $a change.

Les variables prédéfinies

PHP fournit un grand nombre de variables prédéfinies. (https://www.php.net/manual/fr/reserved.variables.php). Ces variables permettent une énorme facilitation du traitement de l’information, en renseignant notamment sur le serveur, en permettant le passage de paramètres, en gérant la portée des variables.

On notera par exemple:

  • $GLOBALS: Contient une référence sur chaque variable qui est en fait disponible dans l’environnement d’exécution global. Les clés de ce tableau sont les noms des variables globales
  • $_GET et $_POST: Permettent de passer des paramètres d’une page à une autre (dans un formulaire pour $_POST, dans un formulaire ou un lien hypertexte pour $_GET)
  • $_SESSION: Permet de garder des informations en « mémoire » tout le long d’une session d’un utilisateur sur un site (tant qu’elle n’expire pas ou que le navigateur n’est pas fermé)
  • $_FILES: Est utilisé lors de l’upload de fichier avec un formulaire

La portée des variables

La portée d’une variable dépend du contexte dans lequel la variable est définie. Lorsque vous définissez une fonction, la portée d’une variable définie dans cette fonction est locale à la fonction.

Voilà 2 scripts. Dans le 1er, on assigne 1 à la variable $a puis on appelle le fichier b.inc. Dans le second script, on écrit à l’écran la valeur de $a.

Ici la variable $a est dite « globale », elle est donc accessible sur la partie principale du programme. Donc à l’écran, on aura « 1 » affiché.

Voilà un autre script. Dans celui-là, on assigne la valeur 1 à $a. Puis on appelle la fonction test(). Dans cette fonction on écrit la valeur de $a.

Ici, le script n’affichera rien car l’instruction echo() utilise la variable locale $a et celle-ci n’a pas été initialisée préalablement dans la fonction. En effet, une variable déclarée hors fonction ne sera pas visible dans cette fonction, sauf si:

  • on la passe en paramètre de la fonction
  • on spécifie que la variable utilisée dans la fonction (ici $a) est globale

Les variables globales

Comme expliqué précédemment, une variable globale est une variable définie dans le corps d’une page et non dans une fonction. Voici 2 scripts identiques permettant d’utiliser des variables globales à l’intérieur d’une fonction.

Ici les variables $a et $b sont déclarées hors fonction, mais on spécifie dans les fonctions somme() et somme2() que l’on utilise ces variables globales, donc leurs valeurs seront prises en compte.

Les variables statiques

Une variable statique a une portée locale uniquement, mais elle ne perd pas sa valeur lorsque le script appelle la fonction. Elles sont donc utilisées principalement à l’intérieur des fonctions. Prenons les deux fonctions ci-contre.

La fonction compteur() est un peu inutile, car à chaque fois qu’elle est appelée, elle initialise $a à 0 et affiche donc « 0 ».

Dans la fonction compteur2(), à chaque fois que la fonction est appelée, elle affichera une valeur de $a incrémentée de 1, car $a a été déclarée en static.

Les variables dynamiques

Il est pratique d’avoir parfois des noms de variables qui sont variables. C’est-à-dire un nom de variable qui est affecté et utilisé dynamiquement. Une variable dynamique prend la valeur d’une variable et l’utilise comme nom d’une autre variable.

Dans l’exemple, on crée une variable $a à laquelle on assine la valeur « bonjour », puis une variable ${$a}. Si on remplace $a par bonjour, alors ${$a} sera la même chose que $bonjour.

Les constantes

Une constante est un identifiant (un nom) qui représente une valeur simple. Comme son nom le suggère, cette valeur ne peut jamais être modifiée durant l’exécution du script (les constantes magiques __FILE__ et __LINE__ sont les seules exceptions). Le nom d’une constante est sensible à la casse, par défaut. Par convention, les constantes sont toujours en majuscules.

Vous pouvez définir une constante en utilisant la fonction define(). Une fois qu’une constante est définie, elle ne peut jamais être modifiée, ou détruite.
Seuls les types de données scalaires peuvent être placés dans une constante (donc pas de tableaux ni d’objets). Lorsque vous utilisez une constante non définie, PHP suppose que vous utilisez le nom de la constante. Une notice sera générée.

Il y a des différences entre les constantes et les variables :

  • Les constantes ne commencent pas par le signe ($)
  • Les constantes sont définies et accessibles à tout endroit du code, globalement
  • Les constantes ne peuvent pas être redéfinies ou indéfinies une fois qu’elles ont été définies
  • Les constantes ne peuvent contenir que des scalaires.

On voit dans l’exemple ci-dessus la déclaration de plusieurs constantes. La spécificité de leur utilisation est qu’il faut absolument éviter de les mettre entre guillemets si on veut les utiliser, sinon seule le texte sera écrit. Ici on utilise la concaténation pour pouvoir utiliser les constantes dans le echo. Ainsi les valeurs des constantes seront remplacées par leurs valeurs.