Zend Framework 2:数据库配置

时间:2014-05-23 02:20:59

标签: php zend-framework2 database-connection config

我正在深入研究ZF2,我对如何使用Zend \ _Dig与Zend \ Db手动建立连接感到困惑。

在手册的不同位置,有不同格式的数据库配置。

这个显示一个平面数组作为配置格式: https://packages.zendframework.com/docs/latest/manual/en/modules/zend.db.adapter.html

$adapter = new Zend\Db\Adapter\Adapter(array(
    'driver' => 'Mysqli',
    'database' => 'zend_db_example',
    'username' => 'developer',
    'password' => 'developer-password'
));

虽然这个显示嵌套格式: https://packages.zendframework.com/docs/latest/manual/en/modules/zend.config.introduction.html

$configArray = array(
    'database' => array(
        'adapter' => 'pdo_mysql',
        'params'  => array(
            'host'     => 'db.example.com',
            'username' => 'dbuser',
            'password' => 'secret',
            'dbname'   => 'mydatabase'
        )
    )
);

我期望发生的是我可以像这样调用一个新的数据库适配器,但这会引发异常:

$config = new Zend\Config\Config(
    array(
        'db' => array(
            'adapter' => 'Mysqli',
            'params'  => array(
                'host'     => 'db.example.com',
                'username' => 'dbuser',
                'password' => 'secret',
                'dbname'   => 'mydatabase'
            )
        )
    )
);

$adapter = new Zend\Db\Adapter\Adapter($config->db);

我最终要做的是:

$config = new Zend\Config\Config(
    array(
        'db' => array(
            'driver' => 'Mysqli',
            'host'     => 'db.example.com',
            'username' => 'dbuser',
            'password' => 'secret',
            'database'   => 'mydatabase'
        )
    )
);

$adapter = new Zend\Db\Adapter\Adapter($config->db->toArray());

有没有更好的方法来实现我想要实现的目标而不必求助于服务经理?

1 个答案:

答案 0 :(得分:2)

忽略Zend Config简介页面中的示例,该页面仅显示如何从PHP数组创建配置对象,数组的结构并不意味着特别显示任何内容。

由于您不想使用服务管理器,因此需要将参数传递给它所期望的结构中的适配器类。它期望一个数组,一个配置对象不会起作用。你已经弄清楚了数组的结构是什么,所以你需要使用它。

我认为文档中的这个页面:http://framework.zend.com/manual/2.3/en/tutorials/tutorial.dbadapter.html("基本设置"部分)更好地解释了服务管理器的方法,这就是我在以下方面做到的。至少是一个MVC应用程序。