Introduction
PHP Manual
PHP Manual»Yaf»Yaf_Config_Ini

La classe Yaf_Config_Ini

(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".

Astuce

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).

class Yaf_Config_Ini extends Yaf_Config_Abstract implements Iterator, ArrayAccess, Countable {
/* Propriétés */
/* Méthodes */
publicfunction __construct(mixed $config_file, string $section = NULL)
public function count(): int
public function current(): mixed
public function get(string $name = NULL): mixed
public function __isset(string $name): bool
public function key(): mixed
public function next(): void
public function offsetExists(mixed $name): bool
public function offsetGet(mixed $name): mixed
public function offsetSet(mixed $name, mixed $value): void
public function offsetUnset(mixed $name): void
public function readonly(): bool
public function rewind(): void
public function set(string $name, mixed $value): bool
public function toArray(): array
public function valid(): bool
/* Méthodes héritées */
public function Yaf_Config_Abstract::get(string $name = NULL): mixed
abstract public function Yaf_Config_Abstract::readonly(): bool
abstract public function Yaf_Config_Abstract::set(string $name, mixed $value): bool
}
_config

_readonly

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"

Sommaire

To Top