理解 fleaphp 中,mvc 模式是如何实现的,以及其特点,可以帮助你更好的运用 fleaphp。
简单来说,设计模式(pattern)就是解决某一类问题的特定方法。由于这种特定方法在解决同类问题时具有通用性,所以我们就可以一次又一次的利用已有的经验。具体到程序编写上,就是我们可以用类似的程序结构和代码解决同类型的问题。有关设计模式的详细内容,可以阅读经典著作《设计模式》,这里我就不班门弄斧了。
mvc 实际上是一系列略有不同的模式。fleaphp 采用的是passive(被动)mvc 模式。
在 passive mvc 模式中,model(模型)完全不知道自己身处于 mvc 结构之中。换句话说,model 就是一个普通的对象,与 mvc 模式里面的其他组成部分完全没有关联。具体而言,mvc 模式涉及到下列三类对象:
经过这样简单的分离,我们就把应用程序操作数据的代码(绝大部分 web 应用程序都是对数据进行操作)和处理用户输入输出的代码分离开来了。
这种分离有许多好处:
如果你上面的文字让你觉得很无聊或者不够严谨,那么说明你已经很熟悉 mvc 模式了。如果你看到上面的文字感到无所适从,那说明你还需要多阅读一些面向对象相关的书籍和文档。
下面的插图描述了基于 fleaphp 应用程序的执行流程。
在 fleaphp 中,index.php 里面的 run() 在调用过滤器链后,会运行一个调度器。该调度器根据 http 请求参数决定要调用的应用程序控制器。例如 index.php?controller=blog&action=list 这个请求表示要调用名为 blog 的应用程序控制器的 list 动作。然后调度器会调用这个控制器的动作。
在 fleaphp 应用程序中,控制器实现为一个类,控制器动作就是该类的一个方法。
在控制器(mvc 模式中的 controller)方法中,通过调用领域逻辑代码(mvc 模式中的 model)来处理 http 请求提交的数据并获得结果。然后再将结果传递给视图(mvc 模式中的 view)。视图根据控制器方法提供的参数从模板文件构造最终的页面内容,并返回给浏览器。
新闻热点
疑难解答