我正在深入研究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());
有没有更好的方法来实现我想要实现的目标而不必求助于服务经理?
答案 0 :(得分:2)
忽略Zend Config简介页面中的示例,该页面仅显示如何从PHP数组创建配置对象,数组的结构并不意味着特别显示任何内容。
由于您不想使用服务管理器,因此需要将参数传递给它所期望的结构中的适配器类。它期望一个数组,一个配置对象不会起作用。你已经弄清楚了数组的结构是什么,所以你需要使用它。
我认为文档中的这个页面:http://framework.zend.com/manual/2.3/en/tutorials/tutorial.dbadapter.html("基本设置"部分)更好地解释了服务管理器的方法,这就是我在以下方面做到的。至少是一个MVC应用程序。