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常用代码
Nov 23 PHP
php curl 登录163邮箱并抓取邮箱好友列表的代码(经测试)
Apr 07 PHP
php中使用redis队列操作实例代码
Feb 07 PHP
wamp下修改mysql访问密码的解决方法
May 07 PHP
PHP利用REFERER根居访问来地址进行页面跳转
Sep 28 PHP
PHP数据库万能引擎类adodb配置使用以及实例集锦
Jun 12 PHP
php中获取主机名、协议及IP地址的方法
Nov 18 PHP
PHP提示Warning:phpinfo() has been disabled函数禁用的解决方法
Dec 17 PHP
Yii框架表单模型和验证用法
May 20 PHP
在PHP 7下安装Swoole与Yar,Yaf的方法教程
Jun 02 PHP
Laravel中前端js上传图片到七牛云的示例代码
Sep 04 PHP
laravel 验证错误信息到 blade模板的方法
Sep 29 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
Yii实现的多级联动下拉菜单
2016/07/13 PHP
详解php框架Yaf路由重写
2017/06/20 PHP
PHP 中TP5 Request 请求对象的实例详解
2017/07/31 PHP
php实现记事本案例
2020/10/20 PHP
document.all还是document.getElementsByName?
2006/07/21 Javascript
在IE浏览器中resize事件执行多次的解决方法
2011/07/12 Javascript
最佳的addEvent事件绑定是怎样诞生的
2011/10/24 Javascript
获取表单控件原始(初始)值的方法
2013/08/21 Javascript
Jquery绑定事件(bind和live的区别介绍)
2013/08/23 Javascript
如何解决手机浏览器页面点击不跳转浏览器双击放大网页
2016/07/01 Javascript
js仿腾讯QQ的web登陆界面
2016/08/19 Javascript
让DIV的滚动条自动滚动到最底部的3种方法(推荐)
2016/09/24 Javascript
JS限制条件补全问题实例分析
2016/12/16 Javascript
JavaScript实现正则去除a标签并保留内容的方法【测试可用】
2018/07/18 Javascript
vue 监听屏幕高度的实例
2018/09/05 Javascript
vue实现简单的星级评分组件源码
2018/11/16 Javascript
layui实现把数据表格时间戳转换为时间格式的例子
2019/09/12 Javascript
React Native中ScrollView组件轮播图与ListView渲染列表组件用法实例分析
2020/01/06 Javascript
js+canvas实现纸牌游戏
2020/03/16 Javascript
jQuery 实现DOM元素拖拽交换位置的实例代码
2020/07/14 jQuery
vant中的toast层级改变操作
2020/11/04 Javascript
python实现mysql的单引号字符串过滤方法
2015/11/14 Python
Python中的id()函数指的什么
2017/10/17 Python
查看python下OpenCV版本的方法
2018/08/03 Python
python调用百度语音识别api
2018/08/30 Python
对python创建及引用动态变量名的示例讲解
2018/11/10 Python
python学习——内置函数、数据结构、标准库的技巧(推荐)
2019/04/18 Python
python仿evething的文件搜索器实例代码
2019/05/13 Python
Python操作Sonqube API获取检测结果并打印过程解析
2019/11/27 Python
在主流系统之上安装Pygame的方法
2020/05/20 Python
移动端Html5页面生成图片解决方案
2018/08/07 HTML / CSS
斯凯奇新西兰官网:SKECHERS新西兰
2018/02/22 全球购物
Tahari ASL官方网站:高级设计师女装
2021/03/15 全球购物
接待员岗位责任制
2014/02/10 职场文书
利用Python实现模拟登录知乎
2022/05/25 Python
win10系统xps文件怎么打开?win10打开xps文件的两种操作方法
2022/07/23 数码科技