Я работаю с Zend-очередью. Я написал фрагмент кода в начальной загрузке, показывающий ошибку. Может ли кто-нибудь мне помочь? - PullRequest
1 голос
/ 28 марта 2012

Я новичок в Zend Framework и пытаюсь работать с Zend_Queue. Я поместил этот кусок кода в начальной загрузке, но это исключение. Код в Bootstrap.php:

<?php
class Bootstrap extends Zend_Application_Bootstrap_Bootstrap {

    protected function _initDatabase() {
        $options = array(
            'name' => 'queue',
            'driverOptions' => array (
                'host'          => '127.0.0.1',
                'port'          => '3306',
                'username'      => 'root',
                'password'      => '',
                'dbname'        => 'queue',
                'type'          => 'pdo_mysql'
            )
        );
    }

    protected function _initQueue() {
        $options = $this->getOptions();
        $queueAdapter = new Zend_Queue_Adapter_Db($options['queue']);

        Zend_Registry::getInstance()->queueAdapter = $queueAdapter;
    }
}

И это ошибка, которую я получаю:

Fatal error: 
  Uncaught exception 'Zend_Queue_Exception' with message 'Adapter options must be an array or Zend_Config object' in
C:\wamp\library\ZendFramework\library\Zend\Queue\Adapter\AdapterAbstract.php:110 Stack trace: #0 
C:\wamp\library\ZendFramework\library\Zend\Queue\Adapter\Db.php(83): Zend_Queue_Adapter_AdapterAbstract->__construct(NULL, NULL) #1
C:\wamp\www\queue2\application\Bootstrap.php(28): Zend_Queue_Adapter_Db->__construct(NULL) #2 C:\wamp\library\ZendFramework\library\Zend\Application\Bootstrap\BootstrapAbstract.php(667): Bootstrap->_initQueue() #3
C:\wamp\library\ZendFramework\library\Zend\Application\Bootstrap\BootstrapAbstract.php(620): Zend_Application_Bootstrap_BootstrapAbstract->_executeResource('queue') #4
C:\wamp\library\ZendFramework\library\Zend\Application\Bootstrap\BootstrapAbstract.php(584): Zend_Application_Bootstrap_BootstrapAbstract->_bootstrap(NULL) #5 
C:\wamp\library\ZendFramework\library\Zend\Application.php(355): Zend_Application_Bootstrap_BootstrapAbstract->bootstrap(NULL) #6
C:\wamp\w in C:\wamp\library\ZendFramework\library\Zend\Queue\Adapter\AdapterAbstract.php on line 110

1 Ответ

1 голос
/ 28 марта 2012

Попробуйте переместить $options, который вы устанавливаете, в тот же метод с _initQueue() и передайте весь массив $options вместо $options['queue'].Не похоже, что $options['queue'] определено, если у вас нет чего-то в application.ini.

Попробуйте:

<?php
class Bootstrap extends Zend_Application_Bootstrap_Bootstrap {

    protected function _initQueue() {
        $options = array(
            'name'          => 'queue',
            'driverOptions' => array (
                'host'          => '127.0.0.1',
                'port'          => '3306',
                'username'      => 'root',
                'password'      => '',
                'dbname'        => 'queue',
                'type'          => 'pdo_mysql'
            )
        );

        $queueAdapter = new Zend_Queue('Db', $options);

        Zend_Registry::getInstance()->queueAdapter = $queueAdapter;
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...