(Yaf >=1.0.0)
Yaf_Config_Ini permet aux développeurs de stocker
des données de configuration dans le format INI familier et de les lire
dans l'application en utilisant une syntaxe de propriétés d'objets
imbriquées. Le format INI est prévu pour fournir à la fois la
possibilité d'avoir une hiérarchie de clés de données de configuration
et un héritage entre les sections de données de configuration. La
hiérarchie des données de configuration est prise en charge en séparant
les clés par le caractère point ("."). Une section
peut étendre une autre section, ou en hériter, en faisant suivre le nom
de la section par le caractère deux-points (":") puis
par le nom de la section dont les données doivent être héritées.
Note:
Yaf_Config_Ini utilise la fonction PHP parse_ini_file(). Il faut consulter cette documentation pour connaître ses comportements spécifiques, qui se propagent à Yaf_Config_Ini, comme la façon dont sont gérées les valeurs spéciales "
true", "false", "yes", "no" et "null".
Yaf_Config_Ini analyse le fichier de
configuration à chaque requête. Si une application gère une grande
quantité de configuration (essentiellement statique), il est préférable
d'envisager l'extension Yaconf : elle
conserve la configuration en mémoire partagée pendant tout le cycle de
vie de PHP, de sorte qu'elle n'est analysée qu'une seule fois et qu'elle
est accessible bien plus efficacement. Yaconf comprend exactement la
même syntaxe INI — des clés séparées par des points et un héritage entre
sections grâce à "[section : parent]" — si bien que
le fichier application.ini existant peut être servi
tel quel par Yaconf ; seule la façon dont il est passé à
Yaf_Application::__construct() change (voir
l'astuce dans Configuration de
l'application).
Exemple #1 Exemple avec Yaf_Config_Ini()
Cet exemple illustre une utilisation basique de Yaf_Config_Ini pour charger des données de configuration depuis un fichier INI. Dans cet exemple, il y a des données de configuration à la fois pour un système de production et pour un système de pré-production. Comme les données de configuration du système de pré-production sont très similaires à celles de production, la section de pré-production hérite de la section de production. Dans ce cas, la décision est arbitraire et aurait pu être écrite dans l'autre sens, avec la section de production héritant de la section de pré-production, mais ce n'est pas forcément le cas pour des situations plus complexes. Supposons alors que les données de configuration suivantes soient contenues dans /path/to/config.ini :
; Données de configuration du site de production [production] webhost = www.example.com database.adapter = pdo_mysql database.params.host = db.example.com database.params.username = dbuser database.params.password = secret database.params.dbname = dbname ; Les données de configuration du site de pré-production héritent de celles ; de production et écrasent les valeurs si nécessaire [staging : production] database.params.host = dev.example.com database.params.username = devuser database.params.password = devsecret
<?php
$config = new Yaf_Config_Ini('/path/to/config.ini', 'staging');
var_dump($config->database->params->host);
var_dump($config->database->params->dbname);
var_dump($config->get("database.params.username"));
?>Résultat de l'exemple ci-dessus est similaire à :
string(15) "dev.example.com" string(6) "dbname" string(7) "devuser"