
| auteur : Cyberzoide | Quand on veut conserver tout au long de la durée du script une même valeur en mémoire, on a deux solutions :
1. déclarer une variable et lui affecter une valeur que l'on ne modifiera pas au cours du script
2. déclarer une constante
La permière solution n'est pas la bonne car il est toujours possible que, par erreur, cette variable soit modifiée. Exemple : $PATH = 'http://www.monsite.com/mondossier/';
require($PATH.'config.php');
...
$PATH = $foobar;
readfile($PATH.$file); |
Pour être sûr que notre valeur ne variera pas au cours du script, déclarons une constante : define("PATH", 'http://www.monsite.com/mondossier/');
require(PATH.'config.php'); |
Attention, les noms de constante ne sont pas préfixés du symbole dollar $ ni dans leur déclaration, ni dans leur utilisation.
define($name, $value [, $opt]) prend un troisième argument -- optionnel celui-là -- qui, mis à 1, permet d'utiliser la constante sans que son identifiant soit sensible à la casse (la casse est la différence majuscule / minuscule). Exemple : |
| auteur : Cyberzoide | Non. Comme sont nom l'indique une constante est... constante :)
Même une tentative de re déclaration avec define() ne sera suivie d'aucun effet.
Exemple : |
| auteur : Cyberzoide | Les constantes de base :
- __FILE__ : nom du script en cours
- __LINE__ : numéro de la ligne en cours
- PHP_VERSION : numéro de version de PHP
- PHP_OS : version du système d'exploitation hébergeant PHP
- PHP_SELF : nom du script courant
- TRUE : valeur booléenne VRAI
- FALSE : valeur booléenne FAUX
- E_ERROR, E_WARNING, E_PARSE, E_NOTICE, E_ALL : dénotation d'erreur
Il existe bien d'autres constantes propres à certaines bibliothèques :
- extension MCAL :
- MCAL_JANUARY : valeur de janvier
- MCAL_RECUR_YEARLY : récurrence annuelle
|
| auteur : Cyberzoide | La fonction defined($str) retourne TRUE si la constante qui porte pour nom la valeur de la chaîne $str est définie, sinon FALSE. Attention la fonction isset($var) ne fonctionne que sur les variables.
|
| auteur : Cyberzoide | Une fois définie, une constante est accessible n'importe où : elle est donc globale. Il n'est alors pas nécessaire de recourir à des stratagèmes similaires à global (pour les variables) pour connaître une constante à l'intérieur d'une fonction. define("MYCST", "ma constante à moi");
function foobar() {
if(defined("MYCST")) {
echo MYCST;
}
}
foobar(); |
On accède à la valeur d'une constante en en spécifiant le nom sans le préfixer du dollar $.
Autre méthode : la fonction constant($str) retourne la valeur de la constante dont le nom est égal à la valeur de la chaîne $str.
Exemple :
|
| auteur : Cyberzoide | La fonction get_defined_constants() retourne un tableau associatifs listant toutes les constantes définies dans le script en cours. Les clés sont les noms des constantes, et les valeurs, leurs valeurs.
Les constantes listées sont celles de base du PHP, celles rajoutées par les diverses extensions chargées par PHP, et celles définies par l'utilisateur avec define().
<table>
<caption>Liste des constantes définies</caption>
<tr>
<th>Nom</th>
<th>Valeur</th>
</tr>
<?php
$tab_const = get_defined_constants();
foreach($tab_const as $key => $value) {
echo "<tr>
<td>$key</td>
<td>$value</td>
</tr>";
}
?>
</table> |
|
| auteur : Cyberzoide | Seuls les nombres (entier et flottant) et les chaînes peuvent être définis comme constante. Les tableaux et objets ne le peuvent pas.
|
| auteur : f-demu01 | Il existe deux directives du php.ini permettant de charger un script avant ou après le chargement d'une page. Il s'agit des variables auto_prepend_file et auto_append_file.
Définissez dans un fichier const.php les constantes que vous voulez accessibles partout dans votre site.<br />Exemple :
if(!(defined(_basedir_)))
define(_basedir_, "/var/www/site1");
if(!(defined(_baselink_)))
define(_baselink_, "http://www.votresite.com"); |
Vous n'avez plus qu'a indiquer à votre fichier php.ini quel fichier doit être chargé avant chaque exécution de script (Attention, le chemin spécifié doit l'être dans le système de fichiers local).<br />php.ini
auto_prepend_file = /var/www/const.php |
Cette astuce vous permet notamment de travailler avec des chemins absolus en toute quiétude, tant pour l'inclusion de fichier:
include_once(_basedir_."/lib/malib.inc"); |
que pour les liens vers les pages ou les images:
echo '<a href="' . _baselink_ . '/images/image5.jpg"> Mon image</a>'; |
|
Consultez les autres F.A.Q's
Les sources présentés sur cette pages sont libre de droits,
et vous pouvez les utiliser à votre convenance. Par contre cette page de présentation de ces sources constitue une oeuvre intellectuelle protégée par les droits d'auteurs.
Copyright ©2003
Developpez LLC. Tout droits réservés Developpez LLC.
Aucune reproduction, même partielle, ne peut être faite de ce site et de
l'ensemble de son contenu : textes, documents et images sans l'autorisation
expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu'à 3 ans
de prison et jusqu'à 300 000 E de dommages et intérets.
Cette page est déposée à la SACD.
|