Les Variables Et Constantes
Les Variables : Types - Déclaration - Affectation
Définition d'une variable
Une variable est un espace nommé permettant de conserver une valeur.
Une variable porte un nom (que l'on définit nous même) et elle permet de conserver une valeur pour la transporter dans notre script.
Il arrive régulièrement que nous ayons connaissance d'une information ligne 27 (par exemple) et que nous voulions la ré-utiliser ligne 232 (par exemple) .
Pour retenir une information en mémoire : nous utilisons une variable !
A quoi ça sert une variable ?
une variable permet de garder une informations en mémoire (durant l'exécution du script), nous pouvons la consulter ou l'utiliser plus tard dans l'exécution du script.
Pourquoi utiliser des variables ?
Pour 1000 choses différentes, si nous évoquions toutes les situations cela risquerait de vous semer car vous n'avez pas encore le niveau pour comprendre les réponses qui font appel à d'autres aspects techniques.
Alors tant que vous êtes encore jeune dév apprenti, n'oubliez pas de vous concentrer sur la question « comment ça marche? » plutôt que vous distraire sur la question « à quoi ça sert? ».
J'insiste mais c'est important, avec mon expérience de formateur j'ai vu trop de gens se braquer et abandonner sous pretexte qu'ils ne voyaient pas où cet apprentissage allait les emmener.
Voici un exemple pratique avec un prenom :
<?php
echo "Bonjour Fred
";
echo "Comment va-tu Fred ?
";
echo "Voici tes informations de profil Fred ...
";
Vous voyez la répétition ? si nous avons besoin d'appeler le prénom
Fred à plusieurs endroits différents, cela risque d'être embéttant.
Pour cela, nous pourrions prévoir une variable qui gardera en mémoire le prénom de l'internaute.
Exemple :
entrainement.php
<?php
$prenom = "Fred";
echo "Bonjour $prenom
";
echo "Comment va-tu $prenom ?
";
echo "Voici tes informations de profil $prenom ...
";
Informationspour que cet exemple fonctionne parfaitement, il faudra prévoir l'utilisation de guillemets plutôt que des quotes (apostrophes)
Avec cet exemple, vous verrez que nous déclarons (ligne 2) la variable prenom contenant la valeur "Fred", cela permet de garder l'information en mémoire pour ensuite nous la ré-utiliser facilement à plusieurs reprises sur les lignes 4, 6 et 8. (nous transportons de lignes en lignes le prénom grâce à notre variable !)
A vous de faire le test dans votre navigateur !
Bonjour Fred
Comment va-tu Fred ?
Voici tes informations de profil Fred ...
Explications et décomposition du code
Une variable est toujours déclarée avec le symbole
$
(dollar),
Ensuite nous précisons le nom de la variable, ici nous avons choisi
prenom, ce qui donne
$prenom.
Le signe égal "
= " est dans ce contexte un opérateur d'affectation.
"
Fred" est la valeur entrante dans la variable pour être gardée en mémoire tout le temps d'exécution du script.
L'instruction
echo
permet quant à elle uniquement de faire des affichages.
Voici un peu de vocabulaire (utile si vous vous retrouvez à travailler à plusieurs, ou en entreprise) :
On dit que l'on déclare la variable
$prenom et qu'on lui affecte la valeur
Fred.
Autre avantage, si nous devons changer le prenom, nous le ferons qu'à un seul endroit et il sera répercuté partout :
entrainement.php
<?php
$prenom = "Nicolas";
echo "Bonjour $prenom
";
echo "Comment va-tu $prenom ?
";
echo "Voici tes informations de profil $prenom ...
";
Imaginez qu'il y ait 1 000 lignes qui fassent appel à la variable
$prenom
, nous ferons qu'une seule modification ligne n°2 et elle sera répercutée partout par la suite.
Bonjour Nicolas
Comment va-tu Nicolas ?
Voici tes informations de profil Nicolas ...
Pour mieux se représenter ce qu'est une variable, voici une métaphore :
Une variable est comme une petite boite dans laquelle nous rangeons quelque chose, plus tard nous rouvrons notre boite et retrouvons ce que nous avions introduit.
A l'origine la variable n'existe pas :

Nous déclarons la variable
$prenom
avec l'information "Fred" à l'intérieur :

Cette information est conservée à l'intérieur de la variable :

Plus tard, nous avons besoin de connaitre l'information contenue dans notre variable (nous rouvrons notre boite) :
Comme son nom l'indique, une variable ça peut varier !
Le contenu d'une variable n'est pas "figé", il peut être modifié à tout moment, voici un exemple :
entrainement.php
<?php
$prenom = "Fred";
echo "Bonjour $prenom
";
echo "Comment va-tu $prenom ?
";
$prenom = "Marie";
echo "Voici tes informations de profil $prenom ...
";
N'oubliez pas d'enregistrer votre fichier et de faire des tests dans le navigateur !
Bonjour Fred
Comment va-tu Fred ?
Voici tes informations de profil Marie ...
Cela n'a pas de sens dans le cas présent de modifier subitement le prénom d'une personne mais ce code vous démontre qu'une variable est interchangeable et ce autant de fois qu'on le souhaite (même en cours de route) ! Ceci sera très pratique pour nos futures programmation.
Nom de variable
Le nom d'une variable doit être explicite, le nom peut être définit en fonction de l'information qu'elle contient.
Si ma variable est destinée à contenir "rouge", je pourrais la nommer $couleur.
Le nom d'une variable doit respecter certaines régles
Par exemple, elle ne doit pas commencer par 1 chiffre mais peut en contenir :
Exemple : $voiture2
mais pas $2voiture.
Nous pouvons mettre toutes les lettres de l'alphabet (A à Z) dans nos variables (en majuscule ou minuscule).
Nous ne pouvons pas mettre de caractères spéciaux, pas d'espace, et bien entendu on évite les accents sur des noms de variable :
$prenom
et non pas
$prénom
.
Respecter une convention de nommage
Il faut absolument éviter (pour vous et pour les autres développeurs qui rejoindront ou récupérerons votre projet) de nommer des variables avec des noms de convention différentes.
Exemple :
$mon-prenom, $mon_prenom, $monPrenom, $MoNpReNoM, $pren, $info, $_monprenom.
Plusieurs conventions de nommage existent, l'essentiel c'est d'en choisir une et de la garder du début à la fin de votre programmation, je vous suggère la syntaxe suivante : $monPrenom.
Cela consiste à inscrire une majuscule lorsqu'un espace doit avoir lieu. (la première lettre est une minuscule).
N'oubliez pas d'enregistrer votre fichier et de faire des tests dans le navigateur !
Les variables sont sensibles à la casse, par conséquent, si vous déclarez une variable contenant une majuscule, il ne faudra pas se tromper au moment de lui demander de s'afficher.
Exemple :
<?php
$monPrenom = "Fred";
echo $monPrenom; // affiche : Fred
echo $monprenom; // affiche une erreur "undefined variable..." soit variable indéfinie (inconnue)
En effet, sur les lignes 2 et 4 les variables sont nommées de la même manière, il n'y a donc aucun problème.
Sur la ligne 6, le "p" de prenom ainsi que toutes les autres lettres sont en minuscule, ce qui ne correspond pas à la déclaration de notre variable ligne 2.
Les types de variables
Reprenons notre fichier
entrainement.php
pour les tests :
entrainement.php
<?php
$variable1 = 127;
echo gettype($variable1) . "
";
Sur la ligne n°2, nous faisons une affectation de la valeur 127 dans la variable nommée "$variable1".
Sur la ligne n°3, nous utilisons gettype() qui est une fonction prédéfinie (= prévue par le langage Php) nous permettant de voir le type d'une variable. Dans notre cas, il s'agit d'un integer, ce qui correspond à un entier (un nombre).
Le point nous permet seulement de faire suivre des informations (avec l'utilisation du
<br>
pour passer à la ligne). Il s'agit de la concaténation dont nous parlerons en détail au chapitre 5.
entrainement.php
<?php
$variable2 = 1.5;
echo gettype($variable2) . "
";
Cette variable est de type double correspondant à un nombre à virgule (déclaré avec un point).
entrainement.php
<?php
$variable3 = "une chaîne";
echo gettype($variable3) . "
";
Là non plus, nous ne regardons pas le contenu d'une variable mais son type : string
entrainement.php
<?php
$variable4 = '127';
echo gettype($variable4) . "
";
C'est toujours le type string, même s'il s'agit d'un nombre, l'utilisation des quotes fait que le php le considère comme une chaine de caractères
entrainement.php
<?php
$variable5 = TRUE;
echo gettype($variable5) . "
";
Type Boolean : TRUE (VRAI, assimilé a 1) ou FALSE (FAUX, assimilé à 0) uniquement.
entrainement.php
<?php
$variable6 = FALSE;
echo gettype($variable6) . "
"; // boolean
Type Boolean : TRUE (VRAI, assimilé a 1) ou FALSE (FAUX, assimilé à 0) uniquement.
integer
double
string
string
boolean
boolean
Pour débuter, voici les principaux types de variables :
Type |
Description |
integer |
chiffre ou nombre |
string |
chaine de caractères (texte) |
boolean |
vrai ou faux (TRUE or FALSE) |
Il existe d'autres types de variable.
Assignation par référence
Voici une notion importante à comprendre, l'assignation par référence :
entrainement.php
<?php
$fruit1 = 'pomme'; // affecte la valeur 'pomme' à $fruit1
$fruit2 = 'banane'; // affecte la valeur 'banane' à $fruit2
echo "fruit1 : $fruit1
"; // affiche : pomme
echo "fruit2 : $fruit2
"; // affiche : banane
$fruit2 = &$fruit1; // passage de référence (assigne la référence de $fruit1 à $fruit2)
echo "fruit1 : $fruit1
"; // affiche : pomme (référence 1)
echo "fruit2 : $fruit2
"; // affiche : pomme (référence 1)
$fruit2 = 'fraise'; // modifie la valeur de $fruit2 (et de $fruit1 par repercution, même espace mémoire)
echo "fruit1 : $fruit1
"; // affiche : fraise
echo "fruit2 : $fruit2
"; // affiche : fraise
// Si nous changeons $fruit2, $fruit1 change en conséquence (et vice versa), leur destin sont liés puisqu'il représente la même référence qui pointe vers 1 seul et même espace mémoire
Ligne 1 : Ouverture de php (pas difficile ça ! :p)
Ligne 2 : Nous affectons la valeur 'pomme' à la variable
$fruit1
.
Voici ce qu'il se passe réellement :

Par habitude, on dit que la variable
$fruit1
contient la valeur "pomme" pour gagner du temps et aller plus vite lors d'un dialogue.
En réalité, la variable
$fruit1
ne contient pas directement de valeur, elle possède la référence
1 qui représente un espace mémoire (avec la même référence, ce qui permet d'assurer la liaison). C'est dans l'espace mémoire
1 qu'est contenu la valeur "pomme".
C'est à dire que la variable n'est pas contenue directement dans la variable au sens propre du mot, la variable est un espace mémoire identifiable par une référence (un numéro, ici le 1) qui mène vers la valeur "pomme".
Question : Pourquoi la variable
$fruit1
possède la référence 1 et pas 56 (par exemple) ? Réponse : car c'est la 1ère variable qui a été déclarée.
Ligne 3 : Nous affectons la valeur 'banane' à la variable
$fruit2
.

Même principe, la variable
$fruit2
possède la référence
2 qui mène vers la valeur 'banane'.
Ensuite ligne 4 et 5, nous demandons aux variables de nous donner les valeurs qu'elles contiennent dans leur espace mémoire (la liaison se fait grâce à leur référence), voici l'affichage :

Ligne 6 : par l'utilisation du symbole
&, nous assignons la référence
1 de
$fruit1
à
$fruit2
.
Par conséquent, les deux variables
$fruit1
et
$fruit2
pointent vers la même référence (et donc le même espace mémoire), soit 2 variables qui pointent vers la référence
1

Ligne 7 et 8 : nous demandons des affichages ce qui confirme le schéma d'au dessus.
Ligne 9 : Dorénavant, le destin de
$fruit1
et
$fruit2
sont liés.
Si je change la variable
$fruit2
,
$fruit1
changera en conséquence puisqu'il pointe vers le même espace mémoire (même référence)
N'oubliez pas, nous ne changeons pas la variable en elle même mais le contenu quelle représente (dans l'espace mémoire) et la liaison se fait avec la référence.

Si nous changeons $fruit2, $fruit1 change en conséquence (et vice versa), leur destin sont liés puisqu'ils représentent la même référence qui pointe vers 1 seul et même espace mémoire
C'est donc ce qu'on appelle un passage de référence.
fruit1 : pomme
fruit2 : banane
fruit1 : pomme
fruit2 : pomme
fruit1 : fraise
fruit2 : fraise
Assignation de valeur
Différent du passage de référence, voici le passage de valeur :
entrainement.php
<?php
$fruit1 = 'pomme'; // affecte la valeur 'pomme' à $fruit1
$fruit2 = 'banane'; // affecte la valeur 'banane' à $fruit2
echo "fruit1 : $fruit1
"; // affiche : pomme
echo "fruit2 : $fruit2
"; // affiche : banane
$fruit2 = $fruit1; // passage de valeur ($fruit2 contient maintenant "pomme")
echo "fruit1 : $fruit1
"; // affiche : pomme (référence 1)
echo "fruit2 : $fruit2
"; // affiche : pomme (référence 1)
$fruit2 = 'fraise'; // modifie la valeur de $fruit2 uniquement
echo "fruit1 : $fruit1
"; // affiche : pomme
echo "fruit2 : $fruit2
"; // affiche : fraise
// $fruit2 et $fruit1 ne sont pas liés, ils possèdent des références différentes et pointent vers des espaces mémoire différents.
Ligne 2 : Nous affectons la valeur 'pomme' à la variable
$fruit1
.
Ligne 3 : Nous affectons la valeur 'banane' à la variable
$fruit2
.
Ligne 4 : Nous affichons la valeur de la variable
$fruit2
, soit : pomme.
Ligne 5 : Nous affichons la valeur de la variable
$fruit1
, soit : banane.
Ligne 6 : Nous passons la valeur de la variable
$fruit1
à la variable
$fruit2
(uniquement la valeur, pas de passage de référence sans le symbole
&.
Ligne 7 : Nous affichons la valeur de la variable
$fruit1
, soit : pomme.
Ligne 8 : Nous affichons la valeur de la variable
$fruit2
, soit : pomme.
Ligne 9 : Nous modifions la valeur de la variable
$fruit2
, soit : fraise.
Ligne 10 : Nous affichons la valeur de la variable
$fruit1
, soit : pomme.
Ligne 11 : Nous affichons la valeur de la variable
$fruit2
, soit : fraise.
Comme vous pouvez le constater,
$fruit2
et
$fruit1
ne sont pas liés, ils possède des références différentes et pointe vers des espaces mémoire différent.
Voici le schéma final de nos variables :
fruit1 : pomme
fruit2 : banane
fruit1 : pomme
fruit2 : pomme
fruit1 : pomme
fruit2 : fraise
Ne l'oubliez pasUne variable est une zone en mémoire du système, qui sert à conserver une valeur.
Les constantes
A quelques détails près une constante c'est comme une variable, son rôle est de conserver une valeur.
Sauf que dans son cas, la valeur ne pourra pas changer durant l'exécution du script, en effet comme son nom l'indique, une constante c'est constant ! Alors qu'une variable ça peut varier.
Au niveau de la convention de nommage, une constante s'écrit toujours en majuscule.
Au niveau de la syntaxe, la déclaration est différente :
entrainement.php
<?php
define("CAPITALE","Paris");
echo CAPITALE . "
";
define
est une fonction prédéfinie (prévue par le langage PHP) permettant de définir une constante en annonçant d'abord son nom, puis ensuite sa valeur.
Par convention, une constante se déclare toujours en majuscule.
Nous demandons ensuite l'affichage du contenu de la constante nommée CAPITALE : Paris.
Nous ne pourrons pas déclarer d'autres valeurs à l'intérieur de la constante nommée CAPITALE
A quoi peut bien servir une constante ? devons nous utiliser plutôt une variable ou une constante ?
Dans la majorité des cas nous utilisons des variables, cela dépend surtout de la nature de l'information à garder.
Comme nous l'avons évoqué, le contenu d'une constante ne pourra pas être redéfinie durant l'exécution du script, il peut donc être utile de garder certaines informations de manière sûre comme les informations de connexion à une base de données, le chemin fixe vers un dossier du site, etc.
Les constantes magiques
D'autres constantes existent dans le langage PHP, on les appelle des constantes magiques, exemple :
entrainement.php
<?php
echo __FILE__ . "
"; // Affiche le chemin complet vers le fichier actuel
echo __LINE__ . "
"; // Affiche le numéro de la ligne
D'autres constantes magiques existent,
voici le lien vers la documentation officielle de PHP.