gpt4 book ai didi

php - ZF2 - ServiceManager 注入(inject) 84 个表......乏味

转载 作者:可可西里 更新时间:2023-10-31 23:42:27 24 4
gpt4 key购买 nike

我最初在几个月前就 ZF2 在 Beta 1 期间使用 DI 注入(inject)表提出了另一个话题,当时我认为这实际上是不可能的。现在 ZF2 已经发布为 2.0.0 版,并且默认使用 ServiceManager 而不是 DI 我想我现在正在重构时也有同样的问题。

我有 84 个表需要将 DbAdapter 注入(inject)其中,我确信必须有更好的方法,因为我正在大量复制自己。

public function getServiceConfig()
{
return array(
'factories' => array(
'accountTable' => function ($sm) {
$dbAdapter = $sm->get('Zend\Db\Adapter\Adapter');
$table = new Model\DbTable\AccountTable($dbAdapter);
return $table;
},
'userTable' => function ($sm) {
$dbAdapter = $sm->get('Zend\Db\Adapter\Adapter');
$table = new Model\DbTable\UserTable($dbAdapter);
return $table;
},
// another 82 tables of the above
)
)
}

对于 EventsManager 和 ServiceManager,我不知道我在获取应用程序的实例/资源方面处于什么位置。

谢谢,多姆

最佳答案

如果有很多这样的注入(inject),您最好创建一个服务管理器初始化器,然后实现一个接口(interface),如 DbAdapterAwareInterface。如果您想实际了解这个想法,请查看 zf2 代码库中的 EventManagerAwareInterface。

关于php - ZF2 - ServiceManager 注入(inject) 84 个表......乏味,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12504302/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com