Zend framework处理一个http请求的流程分析


Posted in PHP onFebruary 08, 2010

Zend framework处理一个http请求的流程分析

 

1, 首先是bootstrap过程,初始化程序里用到的资源

2, 创建一个Zend_Controller_Front实体,实现front controller模式,这个实体类会负责将http请求派遣到恰当的controller的action里。

3, Front controller会创建俩个对象来封装http请求和http回复,分别是Zend_Controller_Request_Http和Zend_Controller_Response_Http

4, Front controller会创建俩个对象来实现url寻路和派遣,分别是routing和dispatcher, 分别负责找到指定url应该执行的控制器和动作,和载入对应的程序文件并执行对应的方法。

5, 通过controller的plugin机制,Zend_Controller_Action_ViewRenderer会为controller的实体类创建一个view属性,这个view是一个Zend_View的实体对象。它还负责在controller action请求处理完成后,将相应的template文件render呈现到http response对象里。最后response对象的内容会由Front Controller输出到浏览器。

6, 在第五步中,虽然template文件是由ViewRender助手对象来定位的,但是是由Zend_VIew的一个成员函数执行的(include进这个template文件),所以在Controller里属性里view对象的所有属性和成员函数在template文件里都可以被使用。

 

这样一个http请求的生命周期就结束了,浏览器获得了内容。在controller的action给view指定要呈现的变量时,它一般会通过Zend_Db_Table与数据库交互,获得数据。

与数据库交互处理数据称为business logic, template文件里也会包涵简单的循环等逻辑,这个称为display logic。

在MVC实现中,Model负责处理business logic, View负责处理display logic,而Controller则负责协调这俩部分,从而Controller的代码应该尽量简洁,它只是作为一个agent存在的。

PHP 相关文章推荐
PHP分页显示制作详细讲解
Oct 09 PHP
BBS(php & mysql)完整版(二)
Oct 09 PHP
PHP文件读写操作之文件写入代码
Jan 13 PHP
PHP ? EasyUI DataGrid 资料存的方式介绍
Nov 07 PHP
php判断电脑访问、手机访问的例子
May 10 PHP
PHP小教程之实现双向链表
Jun 12 PHP
php+mysql不用递归实现的无限级分类实例(非递归)
Jul 08 PHP
WIFI万能钥匙密码查询接口实例
Sep 28 PHP
浅谈PHP正则中的捕获组与非捕获组
Jul 18 PHP
PHP实现的随机IP函数【国内IP段】
Jul 20 PHP
PHP获取中国时间(上海时区时间)及美国时间的方法
Feb 23 PHP
php提交表单时保留多个空格及换行的文本样式的方法
Jun 20 PHP
PHP函数常用用法小结
Feb 08 #PHP
在PHP中养成7个面向对象的好习惯
Jan 28 #PHP
php 正确解码javascript中通过escape编码后的字符
Jan 28 #PHP
php读取xml实例代码
Jan 28 #PHP
通过具体程序来理解PHP里面的抽象类
Jan 28 #PHP
认识并使用PHP超级全局变量
Jan 26 #PHP
php 静态变量与自定义常量的使用方法
Jan 26 #PHP
You might like
一个捕获函数输出的函数
2007/02/14 PHP
PHP编程风格规范分享
2014/01/15 PHP
php数组使用规则分析
2015/02/27 PHP
PHP中遇到的时区问题解决方法
2015/07/23 PHP
PHPCMS手机站伪静态设置详细教程
2017/02/06 PHP
PHP的图像处理实例小结【文字水印、图片水印、压缩图像等】
2019/12/20 PHP
初学js 新节点的创建 删除 的步骤
2011/07/04 Javascript
Javascript 面向对象编程(coolshell)
2012/03/18 Javascript
疯狂Jquery第一天(Jquery学习笔记)
2012/05/11 Javascript
无刷新预览所选择的图片示例代码
2014/04/02 Javascript
PHP+jQuery实现随意拖动层并即时保存拖动位置
2015/04/30 Javascript
常用的Javascript设计模式小结
2015/12/09 Javascript
js获取浏览器和屏幕的各种宽度高度
2017/02/22 Javascript
vue-cli单页应用改成多页应用配置详解
2017/07/14 Javascript
原生JS+CSS实现炫酷重力模拟弹跳系统的登录页面
2017/11/01 Javascript
JavaScript学习笔记之DOM操作实例分析
2019/01/08 Javascript
JavaScript寄生组合式继承原理与用法分析
2019/01/11 Javascript
Vuex中的State使用介绍
2019/01/19 Javascript
详解vue-cli3 中跨域解决方案
2019/04/10 Javascript
解决微信小程序云开发中获取数据库的内容为空的方法
2019/05/15 Javascript
如何使用CSS3和JQuery easing 插件制作绚丽菜单
2019/06/18 jQuery
Vue如何获取数据列表展示
2019/12/11 Javascript
Python ORM框架SQLAlchemy学习笔记之数据查询实例
2014/06/10 Python
Python构造函数及解构函数介绍
2015/02/26 Python
详解python之简单主机批量管理工具
2017/01/27 Python
python实现字符串中字符分类及个数统计
2018/09/28 Python
Python中Proxypool库的安装与配置
2018/10/19 Python
python reverse反转部分数组的实例
2018/12/13 Python
python中logging模块的一些简单用法的使用
2019/02/22 Python
Django 配置多站点多域名的实现步骤
2019/05/17 Python
python yield关键词案例测试
2019/10/15 Python
优质美利奴羊毛袜,不只是徒步旅行:Darn Tough Vermont
2018/11/05 全球购物
大学生开西餐厅创业计划书
2014/02/01 职场文书
迎新晚会邀请函
2014/02/01 职场文书
放弃遗产继承公证书
2015/01/26 职场文书
导游词之无锡华莱坞
2019/12/02 职场文书