php - Zend Framework 2 - DI 并且必须将表适配器注入(inject)表中......乏味吗?

标签 php model-view-controller dependency-injection zend-framework2

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

这似乎是我应该做的:

        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 全部注入(inject)到它们中。是否有任何正确的方法来执行此操作,例如指定我的整个 DbTable 文件夹?即使这样也行不通:

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

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

谢谢,多姆

最佳答案

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

在我的数据库类中,我使用 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 等)存储这种类型的连接数据。

关于php - Zend Framework 2 - DI 并且必须将表适配器注入(inject)表中......乏味吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8141755/

相关文章:

java - CreationException : Unable to create injector error in Play 2. 5.18 使用 com.google.inject.AbstractModule 替换 GlobalSettings Java 代码

c# - ASP.Net MVC 3 Unity IoC 处理

php - 导入数据时防止网上商店没有产品

java - 将 MVC 模型与 Swing 应用程序框架结合使用

php - 如何在 Laravel 验证中要求数组并防止获得意外 key

model-view-controller - MVVM:查找其他ViewModel

php - 你应该在模型中验证吗? (基于 Symfony 的问题,但与一般 MVC 相关)

dependency-injection - .net 核心中的依赖注入(inject),Autofac、StructureMap 和工厂方法,如果注册了多个实现,则解析接口(interface)

php - 使用 .htaccess 将 .ics 文件作为 .php 文件运行

PHP投票系统查看选票