我创建了一个需要发送电子邮件的模块,并在其 getServiceConfig 中创建了一个邮件服务作为工厂。很简单。
$transport = $this->getServiceLocator()->get('custom_module_mail_transport');
// use transport
在 Module.php 中:
'custom_module_mail_transport' => function($instance, $sm) {
$b = new \Zend\Mail\Transport\Smtp();
$b->setOptions(
new \Zend\Mail\Transport\SmtpOptions(
array(
'host' => 'smtp.isp.com',
'connection_class' => 'login',
'port' => 25,
'connection_config' => array(
'username' => 'abc',
'password' => 'def',
)
)
)
);
return $b;
},
不过,我希望人们能够自己动手,为自定义模块的邮件传输实现自己的工厂。我的意思是,我可以使用 config 来获取密码等,但是过多的传输会使这变得不好玩。
将“custom_module_mail_transport”工厂添加到应用程序级服务配置似乎并不能解决问题。目标是让用户滚动他们自己的工厂来覆盖模块提供的工厂。
最好的方法是什么?
感谢您帮助我了解 ZF2。