« Programmation PHP/Constantes » : différence entre les versions

Contenu supprimé Contenu ajouté
DannyS712 (discussion | contributions)
m <source> -> <syntaxhighlight> (phab:T237267)
Ligne 5 :
== Nom ==
Le nom d'une constante suit les mêmes règles que celles pour les variables, mis à part qu'il n'est pas précédé par $. Par convention on les baptise avec des lettres capitales.
<sourcesyntaxhighlight lang="php">
// Noms valides
CONSTANTE1
Ligne 12 :
// Noms invalides
0CONSTANTE
</syntaxhighlight>
</source>
 
== Déclaration ==
Ligne 24 :
L'utilisation est similaire à celle des variables.
 
<sourcesyntaxhighlight lang="php">
<?php
define("CONSTANTE", "Texte ici");
echo CONSTANTE; // affiche "Texte ici"
?>
</syntaxhighlight>
</source>
 
Depuis PHP 5, la déclaration de constantes à l'intérieur d'une [[../Programmation orientée objet|classe]] peut se faire avec le mot-clé '''const''' de la façon suivante :
 
<sourcesyntaxhighlight lang="php">
<?php
class MaClasse
Ligne 48 :
$instance->afficher();
?>
</syntaxhighlight>
</source>
 
Ces constantes sont publiques par défaut, mais PHP 7.1 introduit la possibilité de les rendre privée avec : <code>private const</code>.
Ligne 55 :
=== Type de données ===
Une constante, si elle peut être de type booléen, entier, nombre à virgule flottante ou chaîne de caractère, ne peut en aucun cas être un tableau ou un objet. Elle est donc forcément [[w:Scalaire#Informatique|scalaire]].
<sourcesyntaxhighlight lang="php">
<?php
// Le code suivant va générer une erreur
Ligne 61 :
echo CONSTANTE;
?>
</syntaxhighlight>
</source>
 
=== Unicité de la déclaration ===
La redéclaration d'une constante portant le même nom est ignorée, et la valeur de la première déclaration reste valable.
<sourcesyntaxhighlight lang="php">
<?php
define ("CONSTANTE", "première définition");
Ligne 71 :
echo CONSTANTE; // retournera toujours "première définition"
?>
</syntaxhighlight>
</source>
 
D'où l'utilisation de <code>defined()</code> pour déterminer si une constante est déjà définie ou pas<ref>http://php.net/manual/fr/function.defined.php</ref> :
<sourcesyntaxhighlight lang="php">
define("CONSTANTE", "première définition");
if not defined("CONSTANTE") {
//...
</syntaxhighlight>
</source>
 
=== Conflit de nom ===
Ligne 107 :
 
Exemple:
<sourcesyntaxhighlight lang="php">
<?php
echo 'Fichier: ' . __FILE__ . "\n";
Ligne 126 :
$test->foo();
?>
</syntaxhighlight>
</source>
Qui affichera:
<pre>