* @link http://netmonsters.ru * @package Majestic * @subpackage Model * @since 2010-02-17 * @version SVN: $Id$ * @filesource $URL$ */ class Config extends ArrayObject { private static $_instance = null; public function __construct($config = array()) { parent::__construct($config, ArrayObject::ARRAY_AS_PROPS); } /** * @return Config */ static public function getInstance() { if (is_null(self::$_instance)) { self::$_instance = new Config(); } return self::$_instance; } static public function get($name) { $instance = self::getInstance(); if (! $instance->offsetExists($name)) { throw new Exception('Configuration variable "' . $name . '" undefined'); } return $instance->offsetGet($name); } static public function set($name, $value) { if (is_array($value)) { $value = new ConfigArray($value); } self::getInstance()->offsetSet($name, $value); } } class ConfigArray extends ArrayObject { public function __construct($array) { parent::__construct($array, ArrayObject::ARRAY_AS_PROPS); } public function offsetGet($index) { if (! $this->offsetExists($index)) { throw new Exception('Configuration variable "' . $index . '" undefined'); } return parent::offsetGet($index); } }