QeePHP 可以工作在命令行、Web 服务器等各种环境中。在 Web 服务器中,QeePHP 可以选择 MVC 功能组件来实现全功能的应用程序。
MVC 实际上是一系列略有不同的模式。QeePHP 采用的是Passive(被动)MVC 模式 。
在 Passive MVC 模式中,Model(模型)完全不知道自己身处于 MVC 结构之中。换句话说,Model 就是一个普通的对象,与 MVC 模式里面的其他组成部分完全没有关联。具体而言,MVC 模式涉及到下列三类对象:
MVC 模式最大的作用就是分离逻辑和表现。一个业务逻辑在模型中实现,而处理结果在视图中呈现。控制器则充当中间人,根据用户请求调用模型,然后把处理结果传递给视图。
这种分离有许多好处:
QeePHP 应用程序中,MVC 模式的调用流程如下图:
MVC 模式的调用流程
MVC 模式代码级别的调用流程图请参考开发指南的相关章节。
控制器在 QeePHP 应用中,充当“银行柜台营业员”的角色。所有来自用户(通常是浏览器)的请求在 QeePHP 进行解析后,都交给控制器处理。这和客户到银行办理业务总是到服务窗口前找营业员一样。
但是,控制器并不完成具体的业务。控制器仅仅是将用户输入的数据提交给模型,然后调用模型的业务方法来实际完成业务。这和银行营业员办理业务时通过电脑处理单据一样,营业员仅仅是检查用户提供的资料是否有效。
控制器调用模型获得处理结果后,将结果存入视图。视图则将结果转换为 HTML 代码,并由 QeePHP 返回给浏览器。浏览器解析获得的 HTML 代码,最终将处理结果显示给用户。
图“MVC 模式的调用流程”描述了 QeePHP 中 MVC 模式的大概工作流程。流程中可以看出控制器充当的角色,以及需要完成的任务。从某种意义上说,控制器是应用程序暴露给外部的接口。应用程序外部的用户,只有通过访问控制器才能够使用应用程序,而不是直接访问到应用程序的模型等内在部分。