9

我刚刚阅读了 Rob Allen 的 akrabat ZF2 教程(http://akrabat.com/wp-content/uploads/Getting-Started-with-Zend-Framework-2.pdf),了解如何将依赖项注入到您的东西中,例如注入您的表适配器到您的表类。

这似乎是我应该这样做的方式:

        array(
            'Application\Model\DbTable\UserTable',
        ) => array(
            'parameters' => array(
                'config' => 'Zend\Db\Adapter\PdoMysql',
            )
        ),

        array(
            'Application\Model\DbTable\UserProfileTable',
        ) => array(
            'parameters' => array(
                'config' => 'Zend\Db\Adapter\PdoMysql',
            )
        ),

好的,这很酷,但我有大约 84 个表,所以我将不得不添加每个表,并说我希望 PdoMySQL 将它们全部注入。是否有任何适当的方法来执行此操作,例如指定我的整个 DbTable 文件夹?甚至这都行不通:

        array(
            'Application\Model\DbTable\UserTable',
            'Application\Model\DbTable\UserProfileTable'
        ) => array(
            'parameters' => array(
                'config' => 'Zend\Db\Adapter\PdoMysql',
            )
        ),

还有其他人这样做并找到了更好的解决方案吗?

谢谢, 多姆

4

2 回答 2

1

你的问题很好,我同意,这是一个依赖注入没有意义的场景。我还没有浏览过ZF2 API,他们是否完全放弃了在连接级别而不是表级别绑定适配器的能力?

在我的数据库类中,我使用 yaml 文件来存储连接设置;用户名、密码、适配器等。我使用的格式可以直接传递给 Zend_Config,然后可以传递给 Zend_Db 类。

// Entry in connection.yml
database:
  adapter: Pdo_Mysql
  params:
    host:     myhost
    dbname:   mydatabase
    username: myusername
    password: mypassword

// Parse yaml file to get above snippet in an array ($dbConnectionparams)

$config = new Zend_Config($dbConnectionParams);

$dbo = Zend_Db::factory($config->database);

现在,如果我需要更改数据库连接的适配器,我只需要在一个位置更改它,即 connection.yml 文件。

另外,我相信您可以以各种其他格式(xml 等)存储这种类型的连接数据。

于 2011-11-30T06:28:02.147 回答
0

您应该在模型类中实现 Zend\Db\Adapter\AdapterAwareInterface 并通过控制器中的服务管理器请求它们。查看我的博客文章了解更多详情:http ://cmyker.blogspot.com/2012/11/zend-framework-2-model-database-adapter.html

于 2012-11-24T16:17:30.430 回答