YAML is a recursive acronym meaning "YAML Ain't Markup Language", and is intended as a "human friendly data serialization standard for all programming languages." It is often used for application configuration.
            Zend_Config_Yaml is a lightweight
            Zend_Config extension. It includes a parser capable of
            recognizing most common YAML syntax used for purposes of configuration, and allows
            specifying other parsers should you want more complex syntax (e.g., ext/syck, spyc,
            sfYaml, etc.).
        
The following is a YAML version of a standard application configuration.
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
        
            To utilize it, you simply instantiate Zend_Config_Yaml, pointing
            it to the location of this file and indicating the section of the file to load. By
            default, constant names found in values will be substituted with their appropriate
            values.
        
$config = new Zend_Config_Yaml(
    APPLICATION_PATH . '/configs/application.yaml',
    APPLICATION_ENV
);
        Once instantiated, you use it as you would any other configuration object.
$db = Zend_Db::factory($config->resources->db);
            The following options may be passed as keys to the third, $options
            argument of the constructor.
        
Zend_Config_Yaml Options
- allow_modifications
 - 
                    
The default behavior of
Zend_Configis to mark the object as immutable once loaded. Passing this flag with a booleantruewill enable modifications to the object. - skip_extends
 - 
                    
By default, any time a section extends another,
Zend_Configwill merge the section with the section it extends. Speciying a booleantruevalue to this option will disable this feature, giving you only the configuration defined explicitly in that section. - ignore_constants
 - 
                    
By default,
Zend_Config_Yamlwill replace constant names found in values with the defined constant value. You map pass a booleantrueto this option to disable this functionality. - yaml_decoder
 - 
                    
By default,
Zend_Config_Yamluses a built in decoder,Zend_Config_Yaml::decode(), to parse and process YAML files. You may specify an alternate callback to use in place of the built-in one using this option. 
- 
                    
__construct( $yaml, $section = null, $options = false ); - 
                    
Constructor.
$yamlshould refer to a valid filesystem location containing a YAML configuration file.$section, if specified, indicates a specific section of the configuration file to use.$optionsis discussed in the options section. - 
                    
decode( $yaml ); - 
                    
Parses a YAML string into a PHP array.
 - 
                    
setIgnoreConstants( $flag ); - 
                    
This static function may be used to globally override the default settings for how constants found in YAML strings are handled. By default, constant names are replaced with the appropriate constant values; passing a boolean
truevalue to this method will override that behavior. (You can override it per-instance via theignore_constantsoption as well.) - 
                    
ignoreConstants( ); - 
                    
This static method gives you the current setting for the
ignore_constantsflag. 
Exemplo 123. Using Zend_Config_Yaml with sfYaml
                As noted in the options
                    section, Zend_Config_Yaml allows you to specify an
                alternate YAML parser at instantiation.
            
                sfYaml is a Symfony component that
                implements a complete YAML parser in PHP, and includes a number of additional
                features including the ability to parse PHP expressions embedded in the YAML. In
                this example, we use the sfYaml::load() method as our YAML
                decoder callback. (Note: this assumes that the
                    sfYaml class is either already loaded or available via
                    autoloading.)
            
$config = new Zend_Config_Yaml(
    APPLICATION_PATH . '/configs/application.yaml',
    APPLICATION_ENV,
    array('yaml_decoder' => array('sfYaml', 'load'))
);