Il est normallement d'usage d'utiliser un fichier de configuration pour stocker les différents paramètres d'une application.

Les exemples types de ce genre de configuration sont par exemple les paramètres de connection à une base de données, ou des path filesystem où sont stockés les différents scripts.

Si ce système est normallement satisfaisant sur de nombreuses applications, il peut être néanmoins intérressant de disposer d'une granularité plus fine et ainsi de pouvoir modifier pour une partie de l'application seulement, certains paramètres.

Or si l'on veut faire proprement les choses, ces paramètres ont tout intérêt à être définis sous forme de constantes.
Dès lors se pose la question comment redefinir une constante ?
La réponse est sans appel, ceci n'est pas directement possible !
D'où l'astuce suivante, permettant d'abstraire la récupération de paramètre de configuration :

Soit les constantes 'globales' définies par le prefixe : 'GBL_', et celles locales à une partie seulement de l'application préfixées par 'LCL_'.

<?php

function get_config($name){

    $name = strtoupper($name);
    $gbl_name = 'GBL_'.$name;
    $lcl_name = 'LCL_'.$name;

    if(defined($lcl_name)){
        return constant($lcl_name);
    } elseif(defined($gbl_name)){
        return constant($gbl_name);
    } else {
        return FALSE;
    }
}


define('GBL_FOO', 'titi');
// Décommenter la ligne suivante pour visualiser le mécanisme de surcharge.
// define('LCL_FOO', 'tata'); 
echo get_config('foo');

?>
Le différentes constantes 'globales' à l'application sont à priori contenu dans un fichier unique, les 'locales' sont pour chaque 'zone' de l'application présentes ou non dans un fichier donné.

Il suffit donc dans ses scripts de faire appel à la fonction get_config pour accéder aux paramètres de configuration pouvant ou non être surchargé au niveau local de l'application.

Ce principe ressemble d'ailleurs étrangement au mécanisme natif de PHP, permettant de surcharger certains paramètres du php.ini, soit dans des ficheir .htaccess d'un répertoire, soit carrément au sein d'un script via les fonction php.ini.

Dans ce cas le mécanisme d'accès de php se traduit par l'appel de la fonction ini_get. Sur ce, bon PHP à tous :)