Les constantes
- Par Emacs
- 10 commentaires
- 3 189 lectures
- Format PDF
- RSS - Atom
En programmation, il est souvent nécessaire de définir des structures de données dont la valeur ne doit pas changer au cours de l'exécution du programme. Ces structures de données sont typiquement ce que l'on appelle des constantes. La plus connue des constantes mathématiques est par exemple le nombre PI dont la valeur est approximativement 3.1415926535898. Notons que PHP intègre nativement la constante M_PI. Celle-ci pourra alors être utilisée pour tout calcul de circonférence par exemple. Commençons par étudier comment on déclare une constante dans un programme PHP.
La fonction native define()
La déclaration de constante se prépare au moyen de la fonction native define() qui prend trois paramètres dont les deux premiers sont obligatoires. Voici le détail de la documentation officielle de la fonction define() :
Prototype de la fonction define()
- Le premier paramètre de la fonction est une chaine de caractères qui définit le nom de la constante. Par convention, toutes les constantes doivent être écrites en majuscules.
- Le second est la valeur que l'on affecte à cette constante. Cela peut-être une chaîne de caractères, un entier, un réel ou bien encore un booléen.
- Enfin, le troisième argument est facultatif. C'est un booléen qui indique si l'interprêteur doit se soucier de la casse ou non de la constante.
Nous conseillons de ne jamais renseigner ce troisième argument afin d'imposer une rigueur dans l'écriture du code. Les deux premiers obligatoires suffisent. Passons à la déclaration de notre première constante.
Déclaration d'une constante
Comme tout le monde le sait (ou presque), l'eau bout à une température de 100°C (en théorie). Nous allons donc déclarer une première constante de nom TEMPERATURE_EBULLITION_EAU et qui renferme une information numérique de valeur 100.
Déclaration d'une constante<?php// Déclaration de la constante// Affichage de sa valeur?>
Si l'on teste ce script, on constate que la chaîne de caractères « L'eau bout à 100°C » s'affiche correctement à l'écran, ce qui prouve que la constante a bien été déclarée et initialisée à la bonne valeur.
Notes :
[1] A la déclaration, si la valeur est un nombre, on l'inscrit telle qu'elle dans la fonction.
[2] Pour lire la valeur d'une constante, il suffit de l'appeller par son nom.
D'un point de vue chimique, l'eau est aussi une molécule constituée de deux atomes d'hydrogène auxquels sont associés un atome d'oxygène. Sa formule chimique s'écrit donc H20. Nous allons donc créer une nouvelle constante de nom FORMULE_EAU représentant une chaîne de caractères de valeur H20.
Déclaration d'une nouvelle constante<?php// Déclaration de la constante// Affichage de sa valeurecho 'Formule chimique de l\'eau : ', FORMULE_EAU;?>
Note : à la déclaration, si la valeur est une chaîne de caractères, il faut l'entourer d'apostrophes ou de guillemets doubles.
Redéfinition d'une constante
La valeur d'une constante ne peut être redéfinie ! Des erreurs de syntaxe seront retournées en cas de tentative de rédéfinition de constante ou d'affectation d'une nouvelle valeur. Les deux scripts suivants présentent respectivement ces deux cas.
Erreurs générées en cas de redéfinition d'une constante[Erreur générée] Notice: Constant TEMPERATURE_EBULLITION_EAU already defined in /Applications/MAMP/htdocs/Tests-PHP/constante.php on line 6[Erreur générée] Parse error: syntax error, unexpected '=' in /Applications/MAMP/htdocs/Tests-PHP/xml.php on line 6
Notons le signe = permettant l'affectation d'une valeur à une variable et non une constante. Pour plus d'information sur les variables, nous vous invitons à lire le tutoriel au sujet des variables.
Conclusion
Au terme de ce tutoriel, nous avons défini ce qu'est une constante et à quoi elle sert dans un programme informatique. De plus, nous avons présenté la fonction define() qui permet de déclarer des constantes. Enfin nous avons appris à lire le contenu d'une constante en l'appellant par son nom. Nous sommes prêts pour passer au tutoriel suivant concernant les variables, le pendant des constantes.
Les commentaires
2. Par `Haku le vendredi 23 novembre 2007 à 18:06
Ce n'est pas un problème, c'est son comportement. Et pour éviter les conflits, on a trouvé un truc génial : donner un nom unique en préfixant.
Ce n'est pas pour faire joli que toutes les constantes mathématiques comme par M_.
3. Par saturn1 le mardi 25 décembre 2007 à 21:09
A quoi sa sert une constante?
Techniquement c'est la même chose qu'écrire une variable?
4. Par Emacs le mercredi 26 décembre 2007 à 00:12
Une constante c'est comme une variable mais avec une valeur que l'on ne peut pas modifier. Il est préfèrable de les utiliser quand on sait que certaines valeurs du programme resteront les mêmes. Par exemple, tu peux stockant la valeur de la TVA dans une constante car tu sais qu'elle ne bougera pas pendant toute l'exécution du programme.
++
5. Par saturn2 le vendredi 28 décembre 2007 à 12:12
Ah ok merci,
tu aurais pu le marquer dans le tutos![]()
6. Par Sithran le mercredi 07 mai 2008 à 22:10
Excepté pour la logique même du script, quels sont les avantages offerts par les constantes ? Sont-elles plus rapides que les variables ?
7. Par Emacs le mercredi 07 mai 2008 à 23:11
@Sithran : il y'a deux avantages principaux. Tout d'abord au niveau du sens. Lorsque l'on déclare une constante, c'est que l'on sait que la valeur ne bougera jamais dans toute l'exécution du programme, contrairement aux variables dont l'objectif est de pouvoir contenir une valeur susceptible d'évoluer. Donc pour débugguer c'est bien plus pratique lorsque l'on déclare des constantes plutôt que des variables dont la valeur restera toujours fixe.
Le second gain concerne les performances. Il a été démontré que les accès en lecture des valeurs des constantes et plus rapide que celui des variables. Malgré tout c'est relativement infime comme temps.
Pour ma part, je suis adepte des constantes quand c'est nécessaire. J'apporte une grande importance à la qualité du code et donc notamment à l'utilisation correcte des structures de données. Retenez donc qu'il faut plutôt déclarer des constantes lorsque l'on manipule des valeurs fixes (par exemple des identifiants d'accès à une BDD) et des variables pour des valeurs qui vont évoluer au cours de l'exécution du programme.
8. Par shark le samedi 24 mai 2008 à 20:08
Merci
9. Par crio le lundi 30 juin 2008 à 14:02
Bonjour,
Est-il possible de définir une constante avec la valeur d'une variable à un moment donné (l'exécution d'un formulaire, par exemple)?
10. Par Emacs le lundi 30 juin 2008 à 22:10
Oui c'est possible

1. Par Mickaël Wolff le mardi 20 novembre 2007 à 01:01