Zend Mail - 在哪里实例化它?

发布于 2024-11-06 18:07:52 字数 286 浏览 1 评论 0原文

我正在使用数据映射器/网关设计模式。

所以我有一个:

Mapper; 网关; 领域对象(主要有 getter 和 setter); 一个控制器; 一个视图。

我的问题是:我应该在哪里实例化 Zend Mail ? 我认为这个观点显然是没有问题的,而且网关也不必考虑。

控制器应该保持干净,所以:

映射我们的域对象?

如果我们的表单有一些从数据库检索数据的选择框,那么,也许 Mapper 将是实例化 Zend Mail 的最合适的地方?

谢谢

I'm using a Data Mapper / Gateway design pattern.

So I have a:

Mapper;
Gateway;
Domain Object (mainly with getters and setters);
A controller;
A view.

My question is: where should I instantiate the Zend Mail ?
I believe the view is obviously out of question, and the gateway is, as well, not to be considered.

The controller should be kept clean, so:

Mapper our Domain Object ?

If our form will have some select box that will retrieve data from the database, then, perhaps the Mapper will be the most appropriate place to instantiate Zend Mail ?

Thanks

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

浮生面具三千个 2024-11-13 18:07:52

嗯嗯?使用 Zend,您可以在引导程序中配置 Zend_Mail,或者使用 application.ini 文件或其他一些配置文件。这就是我现在的配置方式。对于开发人员,我将把邮件写入文件,对于测试,我将通过实际的邮件服务器发送邮件。

我在一个名为 Mail_Service 的类中实例化我的 Zend_Mail 实例。当该邮件服务类需要发送邮件时,它将在内部创建一个 Zend_Mail 实例,并且如果已经创建了一个实例并且需要发送更多邮件,则将使用现有的 Zend_Mail 实例。

它有可以为我发送预定义邮件的方法。例如,


Mail_Service->sendWelcomeEmail( $userInfo ) 

或者


Mail_Service->sendActivationEmail( $userInfo )

说我的控制器收到创建新用户的请求,那么我的代码的总体流程将像这样

//in the controller
//process form from browser somehow

UserAccountService->createNewUser( $userInfo );



/////////////////
/// Within the user account service

public function createNewUser( $userInfo )
{
    $userMapper->createNewUser( $userInfo );
    $preferencesMapper->createDefaultPreferencesForUser( $userInfo );

    MailService->sendWelcomeEmail( $userInfo );
}

我不知道是否这是最好的方法,但是这样我的服务就可以发挥作用
与服务相关并捕获整个工作流程的名称,而不是仅将调用转发到其他对象的原子操作。

希望这有帮助。

Hmmmm? Well with Zend you can configure your Zend_Mail in your bootstrap or by using the application.ini file or some other config file. That's how I configure mine right now. For dev, I'll write the mails to a file and for testing I'll do mail over an actual mail server.

I instantiate my Zend_Mail instance in a class that I call Mail_Service. This mail service class will create a Zend_Mail instance internally when it needs to send a mail and will use an existing Zend_Mail instance if one has been created and more mails need to be sent.

It has methods that will send predefined mails for me. For example,


Mail_Service->sendWelcomeEmail( $userInfo ) 

OR


Mail_Service->sendActivationEmail( $userInfo )

Say for example my controller gets a request to create a new user, then the over all flow of my code will be like this

//in the controller
//process form from browser somehow

UserAccountService->createNewUser( $userInfo );



/////////////////
/// Within the user account service

public function createNewUser( $userInfo )
{
    $userMapper->createNewUser( $userInfo );
    $preferencesMapper->createDefaultPreferencesForUser( $userInfo );

    MailService->sendWelcomeEmail( $userInfo );
}

I don't know if this is the best way to do it, but this way my service have function
names that are relevant to the service and capture a whole work flow instead of being atomic operations that just forward calls to other objects.

Hope this helps.

墨落画卷 2024-11-13 18:07:52

我总是在我的控制器中保存发送邮件的代码。

模型 - 数据库/业务逻辑

视图 - html / 表示层

控制器 - 执行操作的代码。

I always keep code that sends mail in my controllers.

Model - database/business logic

View - html / presentation layer

Controller - The code that does stuff.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文