最近在敲打SchuEngine(GitHub)的过程中发现zend-mail发送邮件的种种不便利,决定改进.既然大名鼎鼎的ZendFramework有如此强大的MVC过程和zend-view,何不利用?
一, ZF3 MVC过程概述
按照ZendFramework 3.0 中MvcEvnet的定义,MVC过程大概分为以下阶段(详细过程请关注本人博客Vett,抽时间详述):

1. MvcEvent::EVENT_BOOTSTRAP
目前的ZendFramework对Bootstrap做了大规模的改进,使其在作为MVC事件的开始,主需要绑定一些后续事件即可,这些事件的最主要工作就是初始化View层的Model(ViewModel可以理解为是嵌套结构的View层的原始数据,封装了参数容器,嵌套规则,以及模板"路径"的这么个玩意)
2. MvcEvent::EVENT_ROUTER
路由阶段,负责找到请求对应的Controller和Action
3. MvcEvent::EVENT_DISPATCH
触发上节找到的Controller中的Action,返回的是ViewModel
4. MvcEvent::EVENT_RENDER
这个阶段负责将上节返回的ViewModel,渲染成String,然后将其注入到Response中,准备响应
5. MvcEvent::EVENT_FINISH
响应Response
二, 需求如何实现
弄清楚的ZendFramework 3.0的MVC过程,就该实现我们的业务了,如何作为邮件发送上文渲染过程中生成的String?
是的! 拦截Response的响应过程.
实现如下:
1. 在Controller中指明我们需要将这个生成的模板作为邮件发送
2. 在Controller中生成好邮件的Header(Content-Type, 收件人, 发件人, Cc, Bcc, Subject等)
大功告成,就这样schu-mail诞生了,当然今天的它只支持SMTP协议.
三, 展示
作为SchuEngine的邮件系统,schu-mail基于ZendFramework 3.0的MVC过程,以及zend-mail.
请移步GitHub for schu-mail看个究竟.
网友评论