Наш Zend_Log инициализируется только добавлением следующих строк в application.ini
resources.log.stream.writerName = "Stream"
resources.log.stream.writerParams.mode = "a"
Так что Zend_Application_Resource_Log создаст для нас экземпляр.
Мы уже можем получить доступ к этому экземпляру вконтроллеры с помощью следующего:
public function getLog()
{
$bootstrap = $this->getInvokeArg('bootstrap');
//if (is_null($bootstrap)) return false;
if (!$bootstrap->hasPluginResource('Log')) {
return false;
}
$log = $bootstrap->getResource('Log');
return $log;
}
Пока все хорошо.
Теперь мы хотим использовать один и тот же экземпляр журнала в классах модели, где мы не можем получить доступ к начальной загрузке.
Нашей первой идеей было зарегистрировать тот же экземпляр Log в Zend_Registry, чтобы иметь возможность использовать Zend_Registry :: get ('Zend_Log') везде, где мы хотим:
в нашем классе Bootstrap:
protected function _initLog() {
if (!$this->hasPluginResource('Log')) {
throw new Zend_Exception('Log not enabled');
}
$log = $this->getResource('Log');
assert( $log != null);
Zend_Registry::set('Zend_Log', $log);
}
К сожалению, это утверждение не выполняется ==> $ log IS NULL --- но почему ??
Понятно, что мы могли бы просто инициализировать Zend_Log вручную во время начальной загрузки, не используя автоматизм Zend_Application_Resource_Log, поэтомутакие ответы не принимаются.