Zend_Config_Yaml

Aperçu

YAML est un acronyme récursif signifiant "YAML Ain't Markup Language", et peuyt se résumer en "standard de sérialization de données human friendly pour tous les langages de programmation." Il est souvent utilisé pour la configuration d'applications.

Zend_Config_Yaml est une petite extensions de Zend_Config. Il inclut un analyseur capable de reconnaître la syntaxe YAML utilisées pour des besoins de configuration et permet de préciser d'autres analyseurs à utiliser pour le support de syntaxes complexes (e.g., ext/syck, spyc, sfYaml, etc.).

Démarrage rapide

Voici une version YAML de la configuration d'une application standard.

production:
  phpSettings:
    display_startup_errors: false
    display_errors: false
  includePaths:
    library: APPLICATION_PATH/../library
  bootstrap:
    path: APPLICATION_PATH/Bootstrap.php
    class: "Bootstrap"
  appnamespace: "Application"
  resources:
    frontController:
      controllerDirectory: APPLICATION_PATH/controllers
      moduleDirectory: APPLICATION_PATH/modules
      params:
        displayExceptions: false
    modules:
    db:
      adapter: "pdo_sqlite"
      params:
        dbname: APPLICATION_PATH/../data/db/application.db
    layout:
      layoutPath: APPLICATION_PATH/layouts/scripts/

staging:
  _extends: production

testing:
  _extends: production
  phpSettings:
    display_startup_errors: true
    display_errors: true

development:
  _extends: production
  phpSettings:
    display_startup_errors: true
    display_errors: true
  resources:
    frontController:
      params:
        displayExceptions: true

Pour l'utiliser, instanciez simplement Zend_Config_Yaml en lui indiquant le chemin vers ce fichier ainsi que la section à charger. Par défaut, les constantes trouvées dans les valeurs seront substituées par leurs valeurs.

$config = new Zend_Config_Yaml(
    APPLICATION_PATH . '/configs/application.yaml',
    APPLICATION_ENV
);

Une fois instancié, l'utilisation est classique, comme un objet de configuration.

$db = Zend_Db::factory($config->resources->db);

Options de configuration

Les options suivantes peuvent être passées comme clés au troisième paramètre $options du constructeur.

Zend_Config_Yaml Options

allow_modifications

Par défaut, Zend_Config est en lecture seule. Passer cette option à true autorisera la modification de l'objet.

skip_extends

Par défaut, à chaque fois qu'une section étend une autre, Zend_Config regroupera cette section avec son parent. Utiliser le booléen true pour cette option désactivera ce comportement, la configuration de la section sera telle-quelle.

ignore_constants

Par défaut, Zend_Config_Yaml remplacera toutes les constantes trouvées dans le fichier par leurs valeurs respectives. Passez le booléen true à cette option pour désactiver cette fonctionnalité.

yaml_decoder

Par défaut, Zend_Config_Yaml utilise une analyseur interne, Zend_Config_Yaml::decode(), pour analyser et traiter les fichiers YAML. Vous pouvez préciser une fonction de callback à utiliser comme analyseur externe via cette option.

Méthodes disponibles

__construct( $yaml, $section = null, $options = false );

Constructeur. $yaml doit pointer vers un fichier YAML valide. Si $section est précisé, seule la section indiquée sera analysée. $options est documenté dans la section options.

decode( $yaml );

Analyse et transforme une chaîne YAML en un tableau PHP.

setIgnoreConstants( $flag );

Cette méthode statique est utilisée pour changer le comportement global de l'analyse des constantes trouvées dans les fichiers YAML. Par défaut, les constantes sont remplacées par leurs valeurs. Passer le booléen true à cette méthode surchargera ce comportement. (Vous pouvez changer le comportement par instance en utilisant l'option ignore_constants.)

ignoreConstants( );

Cette méthode statique retourne la valeur actuelle de ignore_constants.

Exemples

Exemple 123. Utiliser Zend_Config_Yaml avec sfYaml

Comme précisé dans la section des options , Zend_Config_Yaml vous permet de spécifier votre propre analyseur YAML.

sfYaml est un Symfony component qui implémente un analyseur YAML complet pour PHP, et inclus des fonctionnalités additionnelles comme l'analyse d'expressions PHP incluses dans du YAML. Dans cet exemple, nous utilisons sfYaml::load() comme méthode callback pour le décodage du YAML. (Note: ceci suppose que la classe sfYaml est déja chargée ou disponible pour auto-chargement.)

$config = new Zend_Config_Yaml(
    APPLICATION_PATH . '/configs/application.yaml',
    APPLICATION_ENV,
    array('yaml_decoder' => array('sfYaml', 'load'))
);