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

Un livre de Wikilivres.
Contenu supprimé Contenu ajouté
Aucun résumé des modifications
+NavTitre + ortho
Ligne 1 : Ligne 1 :
{{NavTitre|book={{BASEPAGENAME}}|prev=Variables|next=Opérateurs}}
{{Programmation PHP}}
{{Programmation PHP}}


Tout comme en [[Programmation C debutants|C]], PHP peut utiliser des [[variables]] dont on précise la valeur une fois pour toute et qui ne pourra être modifiée juqu'à la fin de l'exécution du code.
Tout comme en [[Programmation C debutants|C]], PHP peut utiliser des [[../Variables|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 =
= Généralités =
Ligne 20 : Ligne 21 :


== Déclaration ==
== Déclaration ==
Pour déclarer une constante, on utilise la fonction <tt>define()</tt> (depuis PHP3) qui renvoit un booléen <tt>true</tt> en cas de réussite de déclaration et <tt>false</tt> en cas d'échec.
Pour déclarer une constante, on utilise la fonction <tt>define()</tt> (depuis PHP3) qui renvoie un booléen <tt>true</tt> en cas de réussite de déclaration et <tt>false</tt> en cas d'échec.


La syntaxe de <tt>define<tt> est la suivante :
La syntaxe de <tt>define<tt> est la suivante :

Version du 5 août 2008 à 12:00

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 ne commence pas 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, chiffre.

Utilisation

L'utilisation est similaire à celle de la variable.

<?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 grâce au 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 << Variable donc suivant ou est votre fichier :)
Ligne: 3
Fonction: foo
Classe: test
Fonction: foo
Classe: test

Liens externes