1

Тема: Как создать объект, видимый из всех классов?

Есть некий конфиг, который хранится в БД. Хочу выбирать его с помощью Propel оттуда и потом обращаться как-то так:

sfConfig::getInstance()->getMyConfig();

Есть варианты как это сделать, а то я кучу всего перерыл - и ноль результатов.

2

Re: Как создать объект, видимый из всех классов?

нужно синглтон использовать

http://ru.wikipedia.org/wiki/%D0%9E%D0% … 8%D1%8F%29

3

Re: Как создать объект, видимый из всех классов?

Если я тебя правильно понял, тебе надо некие настройки хранить в базе, их получать-изменять-добавялять..

Вот для Доктрины пример

class myConfig extends sfConfig
{

  public static function get($name, $default = null, $description = null)
  {
    $res = Doctrine::getTable('Config')->findOneByName($name);
    if (!$res) {
      $c = new Config();
      $c->setName($name);
      $c->setValue($default);
      $c->setDescription($description);
      $c->save();
    }

    return isset(self::$config[$name]) ? self::$config[$name] : $default;
  }

}

Вызываем myConfig::get('max_file_size', '2048', 'Максимальный размер в байтах')

схема

Config:
  columns:
    id:             { type: integer(4), primary: true, autoincrement: true }
    name:           { type: string(32) }
    value:          { type: string(32) }
    description:    { type: string(1024) }

Как Админку сгенерить под это я не пишу default/wink

Отредактировано 228Vit (2009-10-31 05:08:23)

Re: Как создать объект, видимый из всех классов?

В экземплярe класса sfContext, который существует на протяжении всего времени исполнения, можно сохранять и потом в любой момент извлекать произвольные объекты:
http://www.symfony-project.org/api/1_2/ … method_set
http://www.symfony-project.org/api/1_2/ … method_get