La différence entre les variables et les constantes
En PHP, comme dans n'importe quel langage de programmation, on peut créer des variables (entiers, chaines de caractère, booléens...), simplement en écrivant un dollar avant le nom, ex: $variable = 10
.
Mais il existe un autre moyen de stocker une information en mémoire : les constantes.
Pour déclarer une constante, il faut utiliser la fonction define
:
<?php define('DB_HOST', 'localhost'); define('APP_ROOT', dirname(__FILE__)); define('NB_RESULT_PAGE', 50); echo DB_HOST; echo NB_RESULT_PAGE + 10; ?>
Comme vous pouvez le voir, on peut utiliser une constante un peu comme on utilise une variable, sauf qu'on ne met jamais de $
devant.
Mais les constantes ont d'autres propriétés :
- Elles n'ont pas de scope et sont accessibles de partout (à l'intérieur d'une fonction, d'une méthode de classe...) sans avoir besoin de déclarer le scope global avant de l'utiliser, comme on doit le faire avec les variables globales grâce au mot clé
global
. - Elles ne peuvent pas être modifiées après leur création, on ne peut pas redéfinir une constante. Comme son nom l'indique, une constante est constante, elle ne change pas.
- Une constante ne peut contenir que des valeurs scalaires (integer, float, boolean, et string), et en aucun cas de type composé. Ainsi, on ne peut pas stocker un array ou un object dans une constante.
En général on s'en sert pour définir des paramètres importants dans une application PHP, comme dans les fichiers de configuration.
Les constantes de classe
define
permet de définir une constante "globale". Mais il est aussi possible de déclarer une constante à l'intérieur d'une classe grâce à l'instruction const
:
<?php class Chiffrement { const cipher = MCRYPT_RIJNDAEL_128; const key = 'La blanquette est bonne'; const mode = 'cbc'; } ?>
Cette page peut vous intéresser : validation de la valeur d'une cellule excel à lire tout de suite !
Pour accéder à une constante de classe, il faut ajouter le nom de la classe suivi de l'opérateur de résolution de portée puis enfin du nom de la constante :
<?php echo Chiffrement::key; ?>
Les constantes de classe sont par exemple utilisées par PDO pour définir le fetch mode notamment :
<?php $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_SILENT); $pdo->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_ASSOC); ?>
Découvrez ce tutoriel photoshop : photomontage "my cat is chouette" à lire tout de suite !
$array = array( array('fr','xxx','thisisatest',123456), array('fr','yyy','thisisatest',456789));
define('COMPTES_ANKAMA',serialize($array));