You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
<?php /** * @copyright NetMonsters <team@netmonsters.ru> * @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); } private function __clone(){} /** * @return Config */ static public function getInstance() { if (! isset(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); } }
|