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.

53 lines
1.5 KiB

10 years ago
10 years ago
10 years ago
  1. <?php namespace Majestic;
  2. /**
  3. * @copyright NetMonsters <team@netmonsters.ru>
  4. * @link http://netmonsters.ru
  5. * @package Majestic
  6. * @subpackage Model
  7. * @since 2010-02-17
  8. */
  9. class Config extends Registry
  10. {
  11. private static $_class_name = 'Config';
  12. /**
  13. * Метод устанавливает параметры конфигурации
  14. * @param mixed $param
  15. * Имя параметра или параметры в массиве
  16. * @param mixed $value
  17. * Значение параметра. Не требуется, если передаются параметры в массиве
  18. */
  19. static public function set($param, $value = null)
  20. {
  21. // Разбираю массив, если параметры переданы в массиве
  22. if (is_array($param)) {
  23. foreach ($param as $paramItem => $value) {
  24. self::set($paramItem, $value);
  25. }
  26. return;
  27. }
  28. if (is_array($value)) {
  29. $value = new ConfigArray($value);
  30. }
  31. self::getInstance()->offsetSet($param, $value);
  32. }
  33. }
  34. class ConfigArray extends \ArrayObject
  35. {
  36. public function __construct($array)
  37. {
  38. parent::__construct($array, \ArrayObject::ARRAY_AS_PROPS);
  39. }
  40. public function offsetGet($index)
  41. {
  42. if (!$this->offsetExists($index)) {
  43. throw new Exception\GeneralException('Configuration variable "' . $index . '" undefined');
  44. }
  45. return parent::offsetGet($index);
  46. }
  47. }