這是在我的Application module.config.php
我的配置:使用ZF2的ServiceManager處理MasterSlaveFeature
'service_manager' => array(
'factories' => array(
'translator' => 'Zend\I18n\Translator\TranslatorServiceFactory',
'navigation' => 'Zend\Navigation\Service\DefaultNavigationFactory',
'masterSlaveFeature' => function($sm){
$dbAdapter = $sm->get('Zend\Db\Adapter\Adapter');
$slaveAdapter = clone $dbAdapter;
$feature = new Zend\Db\TableGateway\Feature\MasterSlaveFeature($slaveAdapter);
return $feature;
},
),
),
這是問題所在。正如你所看到的,我每次打電話給masterSlaveFeature
服務的服務管理員時都會創建一個新的MasterSlaveFeature Db Instance
。
我在想,一個解決方案可能會使用服務管理器來處理MasterSlaveFeature Db Instance
,但是如何將克隆的db adapter
傳遞給服務管理器以便使用適配器加載實例?
我在考慮製作一個處理加載MasterSlaveFeature實例的新服務。
爲什麼您需要克隆適配器?它仍將使用相同的db連接 – Xerkus
每次調用$ sm-> get()時都不會創建主從機功能,它在默認情況下是共享的。 – Xerkus