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学习 计数器实例代码
Jun 15 PHP
Search File Contents PHP 搜索目录文本内容的代码
Feb 21 PHP
ajax实现无刷新分页(php)
Jul 18 PHP
php curl常见错误:SSL错误、bool(false)
Dec 28 PHP
关于使用coreseek并为其做分页的介绍
Jun 21 PHP
PHP防止跨域提交表单
Nov 01 PHP
php文件缓存方法总结
Mar 16 PHP
PDO::commit讲解
Jan 27 PHP
PHP5.5基于mysqli连接MySQL数据库和读取数据操作实例详解
Feb 16 PHP
Laravel框架实现的使用smtp发送邮件功能示例
Mar 12 PHP
ThinkPHP框架实现的微信支付接口开发完整示例
Apr 10 PHP
yii框架结合charjs统计上一年与当前年数据的方法示例
Apr 04 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
php自定义函数call_user_func和call_user_func_array详解
2011/07/14 PHP
简单介绍win7下搭建apache+php+mysql开发环境
2015/08/06 PHP
简单谈谈PHP中的trait
2017/02/25 PHP
Centos 6.5下PHP 5.3安装ffmpeg扩展的步骤详解
2017/03/02 PHP
PHP bin2hex()函数基础实例讲解
2019/02/11 PHP
Zero Clipboard js+swf实现的复制功能使用方法
2010/03/07 Javascript
CSS3,HTML5和jQuery搜索框集锦
2014/12/02 Javascript
JS获取表格内指定单元格html内容的方法
2015/03/31 Javascript
JavaScript tab选项卡插件实例代码
2016/02/23 Javascript
jQuery validate+artdialog+jquery form实现弹出表单思路详解
2016/04/18 Javascript
JavaScript模拟实现封装的三种方式及写法区别
2017/10/27 Javascript
Vue2.0学习系列之项目上线的方法步骤(图文)
2018/09/25 Javascript
js屏蔽退格键(backspace或者叫后退键与F5)
2019/02/10 Javascript
详解JavaScript对数组操作(添加/删除/截取/排序/倒序)
2019/04/28 Javascript
微信小程序实现下拉刷新动画
2019/06/21 Javascript
如何阻止小程序遮罩层下方图层滚动
2019/09/05 Javascript
JS插入排序简单理解与实现方法分析
2019/11/25 Javascript
[02:08]2014DOTA2国际邀请赛 430专访:力争取得小组前二
2014/07/11 DOTA
[50:20]DOTA2上海特级锦标赛主赛事日 - 5 总决赛Liquid VS Secret第四局
2016/03/06 DOTA
[10:42]Team Liquid Vs Newbee
2018/06/07 DOTA
Python实现生成简单的Makefile文件代码示例
2015/03/10 Python
PyQt5每天必学之创建窗口居中效果
2018/04/19 Python
使用python采集脚本之家电子书资源并自动下载到本地的实例脚本
2018/10/23 Python
Numpy数组array和矩阵matrix转换方法
2019/08/05 Python
如何在python中判断变量的类型
2020/07/29 Python
8种常用的Python工具
2020/08/05 Python
使用CSS3制作响应式导航菜单的方法
2015/07/12 HTML / CSS
用CSS3实现无限循环的无缝滚动的示例代码
2017/11/01 HTML / CSS
HTML5逐步分析实现拖放功能的方法
2020/09/30 HTML / CSS
CK美国官网:Calvin Klein
2016/08/26 全球购物
英国的潮牌鞋履服饰商店:size?
2019/03/26 全球购物
一些PHP的面试题
2015/05/06 面试题
竞选演讲稿范文
2013/12/28 职场文书
党日活动总结
2014/05/07 职场文书
入党政审材料范文
2014/12/24 职场文书
教师听课学习心得体会
2016/01/15 职场文书