« Programmation PHP/Constantes » : différence entre les versions
+NavTitre + ortho |
Aucun résumé des modifications |
||
Ligne 6 : | Ligne 6 : | ||
= Généralités = |
= Généralités = |
||
== Nom == |
== Nom == |
||
Le nom d'une constante suit les mêmes règles que celles pour les variables, mis à part que le nom d'une constante |
Le nom d'une constante suit les mêmes règles que celles pour les variables, mis à part que le nom d'une constante n'est pas précédé par $. |
||
<source lang="php"> |
<source lang="php"> |
||
<?php |
<?php |
||
Ligne 17 : | Ligne 17 : | ||
0CONSTANTE |
0CONSTANTE |
||
?> |
?> |
||
</source> |
</source> |
||
Ligne 24 : | Ligne 24 : | ||
La syntaxe de <tt>define<tt> est la suivante : |
La syntaxe de <tt>define<tt> est la suivante : |
||
define( |
define(''chaine_de_caractere'', ''valeur''); |
||
La chaîne de caractère est le nom de la constante, pouvant contenir lettre, tiret, [[w:underscore|underscore]] |
La chaîne de caractère est le nom de la constante, pouvant contenir lettre, tiret, [[w:underscore|underscore]] et chiffre (la première lettre de la chaîne est une lettre dans [a-zA-Z]). |
||
== Utilisation == |
== Utilisation == |
||
L'utilisation est similaire à celle |
L'utilisation est similaire à celle des variables. |
||
<source lang="php"> |
<source lang="php"> |
||
Ligne 34 : | Ligne 34 : | ||
define("CONSTANTE", "Texte ici"); |
define("CONSTANTE", "Texte ici"); |
||
echo CONSTANTE; // affiche "Texte ici" |
echo CONSTANTE; // affiche "Texte ici" |
||
?> |
?> |
||
</source> |
</source> |
||
En PHP5, la déclaration de constantes à l'intérieur d'une classe peut se faire |
En PHP5, la déclaration de constantes à l'intérieur d'une classe peut se faire avec le mot-clé '''const''' de la façon suivante : |
||
<source lang="php"> |
<source lang="php"> |
||
Ligne 54 : | Ligne 54 : | ||
</source> |
</source> |
||
= Informations supplémentaires = |
== Informations supplémentaires == |
||
== Type de données == |
=== 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|Scalaire]]. |
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|Scalaire]]. |
||
<source lang="php"> |
<source lang="php"> |
||
Ligne 61 : | Ligne 61 : | ||
// Le code suivant va générer une erreur |
// Le code suivant va générer une erreur |
||
define ("CONSTANTE", array("a", "b", "c")); |
define ("CONSTANTE", array("a", "b", "c")); |
||
echo CONSTANTE; |
echo CONSTANTE; |
||
?> |
?> |
||
</source> |
</source> |
||
== Unicité de la déclaration == |
=== 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. |
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. |
||
<source lang="php"> |
<source lang="php"> |
||
Ligne 75 : | Ligne 75 : | ||
</source> |
</source> |
||
== Conflit de nom == |
=== Conflit de nom === |
||
Il existe des constantes intégrées à PHP, or on ne peut créer une constante portant leurs noms, cela entraînerait une erreur. |
Il existe des constantes intégrées à PHP, or on ne peut créer une constante portant leurs noms, cela entraînerait une erreur. |
||
En général, évitez la syntaxe suivante pour le nom d'une variable ou d'une constante : |
En général, évitez la syntaxe suivante pour le nom d'une variable ou d'une constante : |
||
__''NOM''__ |
__''NOM''__ |
||
== Constantes intégrées == |
=== Constantes intégrées === |
||
Il en existe de deux types : |
Il en existe de deux types : |
||
*fixes en valeur |
*fixes en valeur |
||
*dont la valeur est dynamique |
*dont la valeur est dynamique |
||
=== Constantes intégrées à valeur fixe === |
==== Constantes intégrées à valeur fixe ==== |
||
Les constantes suivantes ont des valeurs fixes, comme celles définies avec <tt>define</tt> : |
Les constantes suivantes ont des valeurs fixes, comme celles définies avec <tt>define</tt> : |
||
*<tt>TRUE</tt> : vrai (booléen). |
*<tt>TRUE</tt> : vrai (booléen). |
||
Ligne 92 : | Ligne 92 : | ||
*<tt>PHP_OS</tt> : nom du système d'exploitation du serveur exécutant le script. |
*<tt>PHP_OS</tt> : nom du système d'exploitation du serveur exécutant le script. |
||
=== Constantes intégrées à valeur dynamique === |
==== Constantes intégrées à valeur dynamique ==== |
||
Les constantes parfois dites "''magiques''": |
Les constantes parfois dites "''magiques''": |
||
*<tt>__FILE__</tt> : retourne le chemin complet (exemple: /la/ou/est/le/fichier.php) du fichier qui est actuellement exécuté par le serveur. |
*<tt>__FILE__</tt> : retourne le chemin complet (exemple: /la/ou/est/le/fichier.php) du fichier qui est actuellement exécuté par le serveur. |
||
Ligne 119 : | Ligne 119 : | ||
Qui affichera: |
Qui affichera: |
||
<pre> |
<pre> |
||
Fichier: /home/ze/toto.php |
Fichier: /home/ze/toto.php |
||
Ligne: 3 |
Ligne: 3 |
||
Fonction: foo |
Fonction: foo |
||
Ligne 126 : | Ligne 126 : | ||
Classe: test |
Classe: test |
||
</pre> |
</pre> |
||
L'affichage de la première ligne, par exemple, dépend d'où est situé le fichier dans l'arborescence des fichiers. |
|||
== Liens externes == |
== Liens externes == |
Version du 21 février 2009 à 01:10
Tout comme en C, PHP peut utiliser des variables dont on précise la valeur une fois pour toute et qui ne pourra être modifiée jusqu'à la fin de l'exécution du code.
Généralités
Nom
Le nom d'une constante suit les mêmes règles que celles pour les variables, mis à part que le nom d'une constante n'est pas précédé par $.
<?php
// Noms valides
CONSTANTE1
CONSTANTE2
CONSTANTE_plus
// Noms invalides
0CONSTANTE
?>
Déclaration
Pour déclarer une constante, on utilise la fonction define() (depuis PHP3) qui renvoie un booléen true en cas de réussite de déclaration et false en cas d'échec.
La syntaxe de define est la suivante :
define(chaine_de_caractere, valeur);
La chaîne de caractère est le nom de la constante, pouvant contenir lettre, tiret, underscore et chiffre (la première lettre de la chaîne est une lettre dans [a-zA-Z]).
Utilisation
L'utilisation est similaire à celle des variables.
<?php
define("CONSTANTE", "Texte ici");
echo CONSTANTE; // affiche "Texte ici"
?>
En PHP5, la déclaration de constantes à l'intérieur d'une classe peut se faire avec le mot-clé const de la façon suivante :
<?php
class MaClasse {
const CONSTANTE = "Texte ici";
function afficher()
{
echo CONSTANTE;
}
}
$instance = new MaClasse;
$instance->afficher();
?>
Informations supplémentaires
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 Scalaire.
<?php
// Le code suivant va générer une erreur
define ("CONSTANTE", array("a", "b", "c"));
echo CONSTANTE;
?>
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.
<?php
define ("CONSTANTE", "première définition");
define ("CONSTANTE", "deuxième définition"); // ignoré
echo CONSTANTE; // retournera toujours "première définition"
?>
Conflit de nom
Il existe des constantes intégrées à PHP, or on ne peut créer une constante portant leurs noms, cela entraînerait une erreur. En général, évitez la syntaxe suivante pour le nom d'une variable ou d'une constante :
__NOM__
Constantes intégrées
Il en existe de deux types :
- fixes en valeur
- dont la valeur est dynamique
Constantes intégrées à valeur fixe
Les constantes suivantes ont des valeurs fixes, comme celles définies avec define :
- TRUE : vrai (booléen).
- FALSE : faux (booléen).
- PHP_VERSION : version de PHP du serveur exécutant le script.
- PHP_OS : nom du système d'exploitation du serveur exécutant le script.
Constantes intégrées à valeur dynamique
Les constantes parfois dites "magiques":
- __FILE__ : retourne le chemin complet (exemple: /la/ou/est/le/fichier.php) du fichier qui est actuellement exécuté par le serveur.
- __LINE__ : retourne la ligne du fichier qui est actuellement exécuté par le serveur.
- __FUNCTION__ : retourne le nom de la fonction dans laquelle on se trouve.
- __CLASS__ : retourne le nom de la classe dans laquelle on se trouve.
Exemple:
<?php
echo 'Fichier: ' . __FILE__ . "\n";
echo 'Ligne: ' . __LINE__ . "\n";
class test {
function foo() {
echo 'Fonction: ' . __FUNCTION__ . "\n";
echo 'Classe: ' . __CLASS__ . "\n";
}
}
test::foo();
// ou alors
$test = new test();
$test->foo();
?>
Qui affichera:
Fichier: /home/ze/toto.php Ligne: 3 Fonction: foo Classe: test Fonction: foo Classe: test
L'affichage de la première ligne, par exemple, dépend d'où est situé le fichier dans l'arborescence des fichiers.