[ Index ]
 

Code source de Symfony 1.0.0

Accédez au Source d'autres logiciels libresSoutenez Angelica Josefina !

title

Body

[fermer]

/lib/config/ -> sfYamlConfigHandler.class.php (source)

   1  <?php
   2  
   3  /*
   4   * This file is part of the symfony package.
   5   * (c) 2004-2006 Fabien Potencier <fabien.potencier@symfony-project.com>
   6   *
   7   * For the full copyright and license information, please view the LICENSE
   8   * file that was distributed with this source code.
   9   */
  10  
  11  /**
  12   * sfYamlConfigHandler is a base class for YAML (.yml) configuration handlers. This class
  13   * provides a central location for parsing YAML files and detecting required categories.
  14   *
  15   * @package    symfony
  16   * @subpackage config
  17   * @author     Fabien Potencier <fabien.potencier@symfony-project.com>
  18   * @version    SVN: $Id: sfYamlConfigHandler.class.php 3203 2007-01-09 18:32:54Z fabien $
  19   */
  20  abstract class sfYamlConfigHandler extends sfConfigHandler
  21  {
  22    protected
  23      $yamlConfig = null;
  24  
  25    /**
  26     * Parses an array of YAMLs files and merges them in one configuration array.
  27     *
  28     * @param array An array of configuration file paths
  29     *
  30     * @param array A merged configuration array
  31     */
  32    protected function parseYamls($configFiles)
  33    {
  34      $config = array();
  35      foreach ($configFiles as $configFile)
  36      {
  37        $config = sfToolkit::arrayDeepMerge($config, $this->parseYaml($configFile));
  38      }
  39  
  40      return $config;
  41    }
  42  
  43    /**
  44     * Parses a YAML (.yml) configuration file.
  45     *
  46     * @param string An absolute filesystem path to a configuration file
  47     *
  48     * @return string A parsed .yml configuration
  49     *
  50     * @throws sfConfigurationException If a requested configuration file does not exist or is not readable
  51     * @throws sfParseException If a requested configuration file is improperly formatted
  52     */
  53    protected function parseYaml($configFile)
  54    {
  55      if (!is_readable($configFile))
  56      {
  57        // can't read the configuration
  58        $error = sprintf('Configuration file "%s" does not exist or is not readable', $configFile);
  59  
  60        throw new sfConfigurationException($error);
  61      }
  62  
  63      // parse our config
  64      $config = sfYaml::load($configFile);
  65  
  66      if ($config === false || $config === null)
  67      {
  68        // configuration couldn't be parsed
  69        $error = sprintf('Configuration file "%s" could not be parsed', $configFile);
  70        throw new sfParseException($error);
  71      }
  72  
  73      // get a list of the required categories
  74      $categories = $this->getParameterHolder()->get('required_categories', array());
  75      foreach ($categories as $category)
  76      {
  77        if (!isset($config[$category]))
  78        {
  79          $error = sprintf('Configuration file "%s" is missing "%s" category', $configFile, $category);
  80          throw new sfParseException($error);
  81        }
  82      }
  83  
  84      return $config;
  85    }
  86  
  87    /**
  88     * Merges configuration values for a given key and category.
  89     *
  90     * @param string The key name
  91     * @param string The category name
  92     *
  93     * @return string The value associated with this key name and category
  94     */
  95    protected function mergeConfigValue($keyName, $category)
  96    {
  97      $values = array();
  98  
  99      if (isset($this->yamlConfig['all'][$keyName]) && is_array($this->yamlConfig['all'][$keyName]))
 100      {
 101        $values = $this->yamlConfig['all'][$keyName];
 102      }
 103  
 104      if ($category && isset($this->yamlConfig[$category][$keyName]) && is_array($this->yamlConfig[$category][$keyName]))
 105      {
 106        $values = array_merge($values, $this->yamlConfig[$category][$keyName]);
 107      }
 108  
 109      return $values;
 110    }
 111  
 112    /**
 113     * Gets a configuration value for a given key and category.
 114     *
 115     * @param string The key name
 116     * @param string The category name
 117     * @param string The default value
 118     *
 119     * @return string The value associated with this key name and category
 120     */
 121    protected function getConfigValue($keyName, $category, $defaultValue = null)
 122    {
 123      if (isset($this->yamlConfig[$category][$keyName]))
 124      {
 125        return $this->yamlConfig[$category][$keyName];
 126      }
 127      else if (isset($this->yamlConfig['all'][$keyName]))
 128      {
 129        return $this->yamlConfig['all'][$keyName];
 130      }
 131  
 132      return $defaultValue;
 133    }
 134  }


Généré le : Fri Mar 16 22:42:14 2007 par Balluche grâce à PHPXref 0.7