Я думаю, что ваш скрипт не возвращает вам БД, потому что вам нужно сначала загрузить БД.
Попробуйте это: $ application-> getBootStrap () -> bootstrap ('db);
THEN do
$ resource = $ application-> getBootstrap () -> getPluginResource ('db');
На более общем замечании:
** вы можете выполнять как веб-приложения, так и вырезки из одного и того же файла Bootstrap, таким образом, вы можете загружать вещи одинаково для обоих.Это означает, что вы перешли бы к настройке db в свой файл Bootstrap.php и использовали этот файл Bootstrap как для своего веб-приложения, так и для любых других действий, которые вы делаете.Вы можете использовать механизм зависимостей загрузочного механизма для начальной загрузки несколькими, гибкими способами, скажем, один для веб, другой для cli. **
В вашем загрузчике добавьте это:
protected function _initTheDb
{
//Following will automatically go to Zend_Application_Resource_Db,
//if it can't find anything else named db to bootstrap
$this->bootstrap('db');
//do the above instead of the loader script
//which had: $resource = $application->getBootstrap()->getPluginResource('db');
//Now setting up the db works for both cli and web,
//if you add a _initCli() to your bootstrap.
}
Расширенное обсуждение:
Допустим, у вас есть файл Bootstrap.php, подобный этому
protected function _initX
protected function _initTheDb
protected function _initZ
ГДЕ _initTheDb и _initZ - это то, что вы хотите делать как в Интернете, так и в cli, а _initX - это то, что выне хочу делать в cli.
создайте дополнительный _init для cli:
protected function _initCli()
{
$this->bootstrap('TheDb');
$this->bootstrap('Z');
//BUT NOT $this->bootstrap('X'); since that that does apply for CLI.
}
Теперь в вашем скрипте cli loader, просто убедитесь, что вы загрузили ремешок для cli.(Это приведет к загрузке раздела db и любых других разделов, добавленных вами в _initCli).
$application->getBootStrap()->bootstrap('cli');
Вопрос : Как предотвратить загрузку веб-процесса при запуске', поскольку _initCli теперь присутствует в вашей Bootstrap?
X загружается только веб-приложением (вверху файла Bootstrap).Если он был загружен, вы должны работать в веб-среде.Используйте эти знания, чтобы пропустить загрузку раздела cli:
protected function _initCli()
{
if ($this->hasResource('X'))
{
//We know that we are boot-strapping for web.
return;
}
//If we get here, we know that we are cli
$this->bootstrap('TheDb');
$this->bootstrap('Z');
}