Les constantes et les variables en PHP 8
#1 Mettre des commentaires
Au niveau du langage PHP, il y a deux façons de mettre des commentaires :
- Si vous écrivez un commentaire sur une seule ligne ou en fin de ligne, vous devez mettre votre commentaire après un double slashes
//
. - Si vous écrivez un commentaire sur plusieurs lignes, vous devez encapsuler les lignes entre deux repères
/* commentaire */
.
Il y a une possibilité supplémentaire qui est liée à l'utilisation d'une extension qu'on installe sur l'IDE et qui sert à autodocumenter le code PHP et qui s'appelle
PHPDoc Comment
.
J'inclus cette possibilité dans mon exemple ci-dessous. On y reviendra lorsque l'on fera les fonctions. Pour l'instant, c'est simplement une manière de formater des blocs de commentaires (* DocBlocks) sur plusieurs lignes.
#2 Règles de nommage
Lorsque vous donnez un nom à une constante, une variable, une fonction, vous devez respecter un certain nombre de règles.
- Le premier caractère doit être une lettre minuscule ou majuscule ou un tiret bas (* on dit aussi underscore ou tiret du 8).
- Dans les caractères qui suivent, vous avez le droit d'utiliser aussi des chiffres.
- Les lettres accentuées sont autorisées. Personnellement, je ne connais personne qui les utilise et je vous le déconseille.
- Sont interdits le trait d'union (* tiret du 6) et les caractères spéciaux dont $*/\()[]...
Simplifiez-vous la vie en retenant que vous pouvez utiliser des lettres, des chiffres et des tirets bas, mais pas de chiffres en premier.
Quelques mots sur les pratiques. Si vous donnez un nom à une classe, les règles de dessus s'appliquent sauf que par convention la première lettre doit être une majuscule.
Enfin, pendant longtemps, on a utilisé le snake case comme pratique de nommage, aujourd'hui avec l'utilisation des Frameworks c'est plutôt le camel case.
#3 Les constantes
En PHP, il y a quatre catégories de constantes :
- Les constantes classiques dont on va parler juste dessous.
- Les constantes prédéfinies. (* Vous avez un exemple ci-dessous).
- Les constantes magiques. (* Vous avez un exemple
ci-dessous).
- Les constantes de classes dont on peut limiter la portée. Ca, on le fera en temps utile.
Les constantes classiques
Pour déclarer une constante classique, vous avez deux possibilités :
- Utiliser la fonction
define
. - Utiliser le mot réservé
const
.
Ci-dessous, j'utilise la fonction define
. Je vais créer un dossier Test
sur le bureau. Je vais l'ouvrir en tant qu'espace de travail et je vais créer le fichier
define.php
. Je vais insérer une structure minimale avec l'abréviation Emmet
!+TAB
. Dans VSCode, je vais survoler la fonction pour voir sa définition dans le manuel. Je vois qu'en premier argument, je dois utiliser une chaîne de caractères. Je mets le nom de la constante dans la chaîne de caractères. Pour utiliser la constante, je me sers juste de son nom. Le nom de la constante est case sensitive. Cependant, par convention, vous devez utiliser des majuscules pour déclarer vos constantes. Mais le langage ne vous interdit pas de ne pas le faire. Enfin, la portée d'une constante est globale (* sauf pour les constantes de classes).
En deuxième argument, je mets sa valeur. Ici, je n'ai utilisé que trois types de données. La chaîne, l'entier et le flottant, mais la liste est plus longue. Voir la liste des types dans ce tutoriel.
L'utilisation du troisième argument est déprécié depuis PHP 7.3.0.
Ci-dessous une remarque supplémentaire concernant le fait que je passe plusieurs arguments à echo. Vous pouvez passer autant de chaînes de caractères que vous voulez en argument de echo en séparant chacune d'entre elles par une virgule. Toutes les chaînes seront affichées concaténées.
Maintenant, on va utiliser le mot réservé const
. Avec const
, il est possible de définir la valeur de la constante en utilisant une expression scalaire qui contient d'autres constantes.
Les constantes prédéfinies
En suivant ce lien, vous trouverez la liste des constantes prédéfinies. En bas de la page, vous avez les constantes qui concernent les erreurs. C'est peut-être le plus important. Ci-dessous, je vous donne un exemple, dans lequel évidemment la version de PHP va être affichée 🤣.
Les constantes magiques
En suivant ce lien, vous trouverez la liste des constantes magiques. Ces constantes ont quand même quelque chose de particulier, c'est que leur valeur varie 🙃 en fonction de la situation. Ci-dessous, je vous donne un exemple, dans lequel la constante __LINE__
va évidemment retourner le numéro de la ligne 😃.
#4 Les variables
En PHP, pour qu'une variable existe, il faut la déclarer. Pour ça, il faut lui donner un nom, précédé par le caractère $
, puis l'affecter. Le nom doit être conforme aux règles de nommage (* pas de chiffre en premier).
La variable, aura le type de la donnée, que vous lui affectez. Le typage est dynamique, ce qui signifie que vous pouvez affecter, plusieurs fois la variable avec des types différents. (* ce qui n'est pas spécialement conseillé, mais ce n'est pas interdit par le langage).
La portée d'une variable, c'est la totalité du fichier PHP, mais il y a des conditions dans les fonctions et les classes, on voit ça plus loin.
A la fin de l'exécution du fichier PHP (* on dit du script) la variable est perdue. Si vous relancez l'exécution de votre script, eh bien, ce sera une nouvelle variable qui sera réallouée. Si vous voulez avoir des variables qui continuent d'exister entre deux exécutions de script, il faut utiliser des variables de session, dans le cadre d'un mécanisme de gestion de session.
Pour visualiser à la fois le type et la valeur d'une variable, on utilise une fonction PHP prédéfinie var_dump().
Si vous utilisez une variable qui n'a pas été affectée, vous aurez une erreur .
L'exécution de ce script devrait vous donner, un affichage qui ressemble à l'illustration ci-dessous. Si le design est différent, c'est que vous n'avez pas Xdebug 3 d'installé. Si vous n'avez pas l'affichage de l'erreur, alors configurez votre php.ini
ou ajouter les lignes ci-dessous, juste après la balise <?php
.
Il existe, par ailleurs, un certain nombre de variables prédéfinies.
- Il y a des variables internes, qui sont créées par le PHP, et qui font systématiquement partie de l'environnement d'exécution du script. C'est, par exemple, le cas de la variable
$_SERVER
ou de la variable$_ENV
. Ces variables affichent de nombreuses informations qui proviennent du PHP, du navigateur, du serveur voir de l'OS. - Il y a les variables externes qui sont aussi créées par le PHP, mais qui peuvent être injectées ou pas au moment de l'exécution. C'est le cas de
$_GET
ou de$_POST
qui sont utilisées par le navigateur ou le fameux tableau$argv
et sa dimension$argc
qui sont utilisés en ligne de commande.
La plupart de ces variables sont des superglobales. Cela signifie qu'elles existent tous le temps et qu'elles sont visibles depuis n'importe quel endroit du script sans conditions. C'est ce qui justifie le super de superglobales.
#5 Introduction à la substitution des variables dans les chaînes
Lorsque l'on met une variable dans une chaîne de caractères, cette variable est remplacée par sa valeur. C'est ce que l'on appelle la substitution de variable. Attention, il faut que la chaîne de caractères soit délimitée par des doubles quote. Si vous mettez des simples quote, vous n'aurez pas cette substitution.
Tout ça est détaillé dans le tutoriel sur les chaînes de caractères.
#6 Bilan comparatif constantes et variables
Maintenant, on va faire un bilan concernant les variables et les constantes. On va comparer :
- La portée.
- La façon d'utiliser
echo
. Selon que l'on a ou pas la substitution, on n'utilise pasecho
de la même manière.
On va déclarer une fonction et aussi une classe avec une méthode.
On va constater une première chose, c'est que la variable $prix
n'est pas visible dans la fonction si on ne fait rien. Ce que vous pouvez faire c'est mettre le mot réservé global
devant le nom de la variable. Et là, vous la verrez. Attention, je ne vous dis pas, que c'est la bonne manière de faire. Je vous dis juste que c'est possible.
C'est pareil si je déclare une classe avec une méthode dedans. Je mets la méthode en static
pour ne pas avoir à instancier la classe. Ça peu importe, on verra plus tard.
Si je déclare la constante TAXE
, alors elle est accessible de partout. De même, si j'utilisais une superglobale, elle serait visible de partout.
Maintenant au niveau du echo
. Je peux inclure la variable dans une chaîne, mais si j'utilise la constante, il faut que je la passe en argument et que je sépare les arguments par des virgules.