Dans PHP, les variables peuvent provenir de plusieurs sources :
Ce qui est très surprenant pour les habitués des langages fortement typés (cf C, Java, etc), c'est que dans PHP le typage des variables est dynamique : une variable est du type de la donnée qu'elle contient à un instant T.
Les variables créées et utilisées par le développeur doivent respecter certaines règles de nommages et obéissent à des règles de portée dans le script.
Note : une lettre est définie comme les caractères "a" à "z" (minuscule ou majuscule), et n'importe quel caractère avec une valeur ASCII comprise entre 127 et 255 (ce qui inclut les caractères accentués).
Dans l'exemple, différentes valeurs sont affectées successivement à
la même variable. Nous utilisons la fonction
gettype()
pour connaître le type affecté à la variable par PHP.
C'est
PHP qui gère automatiquement les changements de type.
Nous avons la possibilité de forcer une variable à être d'un
certain type en utilisant la syntaxe suivante :
$x = (type) valeur;
type peut être int, integer, bool, boolean, real, double, float, string, array, object
Par exemple :
$x = (string)
12;
créée une variable de type chaîne contenant la valeur
12. C'est équivalent à :
$x =
'12';
$x contient donc une chaîne numérique.
Généralement, les variables sont affectées par valeur : nous donnons directement une valeur à la variable ($a = 100), ou une variable prend la valeur d'une autre variable ($b = $a). L'affectation ($b = $a) affecte dans la variable $b une copie de la variable $a : chacune des variables occupe un espace mémoire différent. Si nous changeons la valeur de $a, $b n'est pas modifiée.
Nous pouvons aussi affecter des variables par référence. On obtient alors deux variables qui pointent vers le même espace mémoire. Aucune copie n'est faite et les modifications d'une des variables sont visibles dans l'autre variable. Pour affecter une variable par référence, il suffit d'ajouter le caractère & devant le nom de la variable placée à droite de l'opérateur d'affectation.
PHP permet aussi de créer des variables dynamiques : nous pouvons référencer la valeur d'une variable comme nom de variable. Pour cela nous utilisons la syntaxe $$ comme dans l'exemple suivant.
La portée d'une variable (scope) dépend de l'endroit
où la variable est définie.
Quand une variable est
définie dans une fonction, sa portée est locale à la fonction.
Quand une variable est définie en dehors d'une fonction, sa portée
est globale à l'ensemble des lignes de script en dehors des
fonctions.
Dans l'exemple suivant, nous définissons deux variables :
$x est définie en dehors d'une fonction. Sa
valeur est "Piat".
$y est
définie dans une fonction. Sa valeur est "François".
Nous
affichons ensuite les variables dans le contexte général du script,
puis dans le contexte d'une fonction.
L'utilisation du mot-clé global permet à une fonction d'accéder à une variable définie à un niveau global dans le script.
Nous pouvons reprendre l'exemple en permettant à la fonction d'afficher la variable globale x.