ZF2重新启动服务管理器密钥


ZF2 Re-starting service manager key

我的服务管理器中存储了一个名为"dbAdapter"的数据库适配器。我正在寻找一种方法来断开连接,然后使用稍微不同的配置重新连接到此适配器,可能会多次。

原因是我有很多客户的数据库结构是100%相同的。我正在写一个cron作业,它将对每个数据库进行维护,但它必须连接到第一个数据库,完成它的任务,放弃连接并连接到下一个数据库。。。直到数据库用完为止。

我一直在查找源代码,但在Zend''ServiceManager''ServiceManager.php中只能找到一个名为unregisterService的受保护方法,它看起来可以做我想做的事情,但它是一个受保护的方法,因此我无法从控制器中调用它。

是否可以使服务管理器密钥"过期",并在下次调用时强制其重新创建?

您可以在ServiceManager中将$allowOverride设置为true,然后在名称dbAdapter下注册一个null值。

$serviceManager->setAllowOverride(true)
               ->setService('dbAdapter', null)
               ->setAllowOverride(false);