我正在尝试在引导期间设置服务定位器 所有这些服务都依赖于数据库Zend_Db,并且每个服务都在创建时注入了所需的数据映射器。
看起来像这样:
$alertService = new WORK_Alert_Service_Service(array("AlertMapper" => new Model_Alert_Mapper(),
"AlertUserSubscriptionMapper" => new Model_Alert_User_Subscription_Mapper()));
$emailerService = new WORK_Emailer_Service_Service(
array("AccountMapper" => new Model_Emailer_Email_Account_Mapper()));
$encryptionService = new WORK_Encryption_Service_Service();
$services = array(
$alertService,
$emailerService,
$encryptionService
);
WORK_ServiceLocator::regiserServices($services);
所以我发现我得到以下错误
找不到Model_Emailer_DbTable_EmailAccounts
的problemNo适配器
电子邮件服务发生这种情况的原因是,而不是警报服务 电子邮件服务连接到数据库并获取所有可用的电子邮件帐户并将它们存储在对象中以供以后用于构造(维护映射器对象,以便可以操作/清除帐户列表并在需要时重置)。
在引导过程之后是否创建了Zend_Db适配器? 如果是这样可以推动这一进程?
我可以通过将它们移动到各个模块的引导程序文件来解决这个问题吗?
答案 0 :(得分:1)
我正在尝试在引导期间设置服务定位器
我假设上面的代码出现在bootstrap _init*
方法中。如果是这样,只需将其放在方法的开头
protected function _initServices()
{
$this->bootstrap('db');
// and the rest