Int*_*lix 9 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),了解如何将依赖项注入到你的东西中,例如注入将表适配器放入表类中.
这似乎是我应该这样做的:
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',
)
),
Run Code Online (Sandbox Code Playgroud)
好吧,这很酷,但我有大约84个表,所以我将不得不添加其中每一个,并说我希望PdoMySQL注入所有这些.有没有正确的方法来指定我的整个DbTable文件夹?甚至没有这个工作:
array(
'Application\Model\DbTable\UserTable',
'Application\Model\DbTable\UserProfileTable'
) => array(
'parameters' => array(
'config' => 'Zend\Db\Adapter\PdoMysql',
)
),
Run Code Online (Sandbox Code Playgroud)
其他人这样做并找到了更好的解决方案?
谢谢,Dom
你的问题是一个很好的问题,我同意,这是一种依赖注入没有意义的场景。我还没有浏览过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);
Run Code Online (Sandbox Code Playgroud)
现在,如果我需要更改数据库连接的适配器,我只需在一个位置(connection.yml 文件)进行更改。
另外,我相信您可以以各种其他格式(xml 等)存储这种类型的连接数据。