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 相关文章推荐
Windows下IIS6/Apache2.2.4+MySQL5.2+PHP5.2.1安装配置方法
May 03 PHP
Cannot modify header information错误解决方法
Oct 08 PHP
使用迭代器 遍历文件信息的详解
Jun 08 PHP
php的sprintf函数的用法 控制浮点数格式
Feb 14 PHP
PHP写的资源下载防盗链类分享
May 12 PHP
跟我学Laravel之路由
Oct 15 PHP
微信公众平台接口开发入门示例
Dec 24 PHP
php中实现可以返回多个值的函数实例
Mar 21 PHP
php实现生成验证码实例分享
Apr 10 PHP
Ajax+Jpgraph实现的动态折线图功能示例
Feb 11 PHP
浅谈PHP封装CURL
Mar 06 PHP
Laravel5.3+框架定义API路径取消CSRF保护方法详解
Apr 06 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
PHP4在Windows2000下的安装
2006/10/09 PHP
php下通过伪造http头破解防盗链的代码
2010/07/03 PHP
Thinkphp3.2.3整合phpqrcode生成带logo的二维码
2016/07/21 PHP
PHP7下协程的实现方法详解
2017/12/17 PHP
Laravel框架基于ajax实现二级联动功能示例
2019/01/17 PHP
Google韩国首页图标动画效果
2007/08/26 Javascript
JavaScript入门教程(12) js对象化编程
2009/01/31 Javascript
javascript监听鼠标滚轮事件浅析
2014/06/05 Javascript
基于javascript如何传递特殊字符
2015/11/30 Javascript
JavaScript缓冲运动实现方法(2则示例)
2016/01/08 Javascript
BootStrap智能表单demo示例详解
2016/06/13 Javascript
Vue.js第二天学习笔记(vue-router)
2016/12/01 Javascript
详解vue-router 2.0 常用基础知识点之router.push()
2017/05/10 Javascript
js学习总结之DOM2兼容处理顺序问题的解决方法
2017/07/27 Javascript
微信小程序tabBar底部导航中文注解api详解
2017/08/16 Javascript
详解React中setState回调函数
2018/06/14 Javascript
vue和H5 draggable实现拖拽并替换效果
2020/07/29 Javascript
JS轮播图的实现方法2
2020/08/25 Javascript
[06:07]DOTA2-DPC中国联赛 正赛 Ehome vs VG 选手采访
2021/03/11 DOTA
用Python实现斐波那契(Fibonacci)函数
2016/03/25 Python
flask使用session保存登录状态及拦截未登录请求代码
2018/01/19 Python
python实现拓扑排序的基本教程
2018/03/11 Python
Pandas DataFrame 取一行数据会得到Series的方法
2018/11/10 Python
Python 等分切分数据及规则命名的实例代码
2019/08/16 Python
浅谈keras 模型用于预测时的注意事项
2020/06/27 Python
Python绘制组合图的示例
2020/09/18 Python
python em算法的实现
2020/10/03 Python
css3的动画特效之动画序列(animation)
2017/12/22 HTML / CSS
Trip.com香港网站:Ctrip携程旗下,全球最大的网上旅游社之一
2016/08/01 全球购物
在C++ 程序中调用被C 编译器编译后的函数,为什么要加extern "C"
2014/08/09 面试题
创业计划书的写作技巧及要点
2014/01/31 职场文书
抗震救灾标语
2014/06/26 职场文书
中学教师教学工作总结
2015/08/13 职场文书
2016年教师师德师风心得体会
2016/01/12 职场文书
2019年健身俱乐部的创业计划书
2019/08/26 职场文书
vue点击弹窗自动触发点击事件的解决办法(模拟场景)
2021/05/25 Vue.js