Что “правильный” Путь состоит в том, чтобы Предоставить Приложению Зенда Обработчик Баз данных

Этот пример поддерживает общую невидимость, а также только NotifyIcon в Системном лотке и никаких щелчках и многое другое.

Больше здесь: http://code.msdn.microsoft.com/TheNotifyIconExample

6
задан Charles 5 April 2011 в 16:57
поделиться

1 ответ

Идея состоит в том, что ваш Bootstrap читает файл конфигурации, и вы объявляете записи конфигурации для описания адаптера базы данных, который хотите создать:

[bootstrap]
resources.db.adapter = Pdo_Mysql
resources.db.params.dbname = "mydatabase"
resources.db.params.username = "webuser"
resources.db.params.password = "XXXX"
resources.db.isDefaultTableAdapter = true

Если вы используете ключи конфигурации, следуя правильному соглашению, это автоматически сигнализирует базовому классу Bootstrap о необходимости создать и инициализировать объект Zend_Application_Resource_Db и сохранить его в реестре ресурсов начальной загрузки .

Позже в вашем контроллере вы можете получить доступ к реестру ресурсов. примечание: Я отредактировал этот код после дополнительного тестирования.

class SomeController extends Zend_Controller_Action
{
    public function init()
    {
        $bootstrap = $this->getInvokeArg("bootstrap");
        if ($bootstrap->hasPluginResource("db")) {
            $dbResource = $bootstrap->getPluginResource("db");
            $db = $dbResource->getDbAdapter();
        }
    }
}

В качестве альтернативы вы можете написать собственный метод инициализации в своем классе Bootstrap, чтобы сохранить объект в Zend_Registry по умолчанию:

class Bootstrap extends Zend_Application_Bootstrap_Bootstrap
{
  protected function _initDb()
  {
    if ($this->hasPluginResource("db")) {
      $dbResource = $this->getPluginResource("db");
      $db = $dbResource->getDbAdapter();
      Zend_Registry::set("db", $db);
    }
  }
}

Теперь вы можете получить доступ к своему объекту db за один шаг, а не за три:

class SomeController extends Zend_Controller_Action
{
    public function init()
    {
        $db = Zend_Registry::get("db");
    }
}

Лично я бы использовал второй метод, потому что тогда мне нужно получить доступ к реестру ресурсов только один раз, в моем начальной загрузке. В первом примере мне пришлось бы скопировать один и тот же блок кода на все мои контроллеры.

18
ответ дан 8 December 2019 в 13:00
поделиться
Другие вопросы по тегам:

Похожие вопросы: