ZF2 - 缺少参数驱动程序错误的实例/对象

时间:2014-08-15 12:47:51

标签: php zend-framework2

我使用zend framework 2应用程序收到以下错误消息:

  

缺少参数驱动程序的实例/对象   Zend \ Db \ Adapter \ Adapter :: __ construct(文件:   C:\ XAMPP \ zendfw2 \ ZendSkeletonApplication \厂商\ zendframework \ zendframework \库\ Zend的\迪\ Di.php:856)

我的代码如下: 自动加载/ local.php:

return array(
'di' => array(
    'instance' => array(
        'Zend\Db\Adapter\Adapter' => array(
            'parameters' => array(
                'driver' => 'Zend\Db\Adapter\Driver\Pdo\Pdo',
            ),
        ),
        'Zend\Db\Adapter\Driver\Pdo\Pdo' => array(
            'parameters' => array(
                'connection' => 'Zend\Db\Adapter\Driver\Pdo\Connection',
            ),
        ),
        'Zend\Db\Adapter\Driver\Pdo\Connection' => array(
            'parameters' => array(
                'connectionInfo' => array(
                    'dsn' => "mysql:dbname=zendtest;host=localhost",
                    'username' => 'root',
                    'password' => '',
                    'driver_options' => array(PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES \'UTF8\''),
                ),
            ),
        ),
    ),
),

);

module.config.php:

return array(
'di' => array(
        'Test2\Model\ManagerAbstract' => array(
            'parameters' => array(
                'adapter'  => 'Zend\Db\Adapter\Adapter',
            ),
        ),
),
...);

ManagerAbstract.php:

namespace Test2\Model;

use Zend\Db\Adapter\Adapter;
use Zend\Db\Adapter\AdapterAwareInterface;

abstract class ManagerAbstract implements AdapterAwareInterface 
{
protected $adapter;

public function setDbAdapter(Adapter $adapter)
{
    $this->adapter = $adapter;
}

public function getUserList() {
    $sql = new Sql($this->adapter);
    $select = $sql->select();
    $select->from(array('u'=>'tsrv_user'));
    $select->where(array('username' => $username));
    $statement = $sql->prepareStatementForSqlObject($select);
    $results = $statement->execute();

    return $results;
}
}

user.php的:

namespace Test2\Model;

class User extends ManagerAbstract
{
public function __construct() {

}
}

我在控制器中称它为:

$di = new Di();
$model = $di->get('Test2\Model\User');
$model->getUserList();

请指出导致错误消息的原因,请帮助我吗?

1 个答案:

答案 0 :(得分:0)

我认为Zend\Db\Adapter\Adapter配置中Di的定义并不正确。

您可以在此处找到正确的方法:Zend\Db Adapter instantiation through Zend Framework 2 Di