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 的ArrayAccess接口 像数组一样来访问你的PHP对象
Oct 12 PHP
php smarty模板引擎的6个小技巧
Apr 24 PHP
php实现的替换敏感字符串类实例
Sep 22 PHP
ThinkPHP中公共函数路径和配置项路径的映射分析
Nov 22 PHP
9条PHP编程小知识及易犯的小错误
Jan 22 PHP
分享自定义的几个PHP功能函数
Apr 15 PHP
php使用APC实现实时上传进度条功能
Oct 26 PHP
php实现概率性随机抽奖代码
Jan 02 PHP
Zend Framework教程之Loader以及PluginLoader用法详解
Mar 09 PHP
PHP基于Redis消息队列实现发布微博的方法
May 03 PHP
PHP实现分布式memcache设置web集群session同步的方法
Apr 10 PHP
PHP SPL 被遗落的宝石【SPL应用浅析】
Apr 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
PHP经典的给图片加水印程序
2006/12/06 PHP
优化php效率,提高php性能的一些方法
2011/03/24 PHP
PHP检测链接是否存在的代码实例分享
2016/05/06 PHP
CI框架扩展系统核心类的方法分析
2016/05/23 PHP
js 无提示关闭浏览器页面的代码
2010/03/09 Javascript
JS预览图像将本地图片显示到浏览器上
2013/08/25 Javascript
javascript 上下banner替换具体实现
2013/11/14 Javascript
手机平板等移动端适配跳转URL的js代码
2014/01/25 Javascript
js实现页面跳转重定向的几种方式
2014/05/29 Javascript
jQuery中get()方法用法实例
2014/12/27 Javascript
Javascript中setTimeOut和setInterval的定时器用法
2015/06/12 Javascript
jQuery 3.0中存在问题及解决办法
2016/07/15 Javascript
浅谈JS正则表达式的RegExp对象和括号的使用
2016/07/28 Javascript
jQuery轮播图效果精简版完整示例
2016/09/04 Javascript
getElementById().innerHTML与getElementById().value的区别
2016/10/27 Javascript
JavaScript日期对象(Date)基本用法示例
2017/01/18 Javascript
jquery拼接ajax 的json和字符串拼接的方法
2017/03/11 Javascript
jQuery导航条固定定位效果实例代码
2017/05/26 jQuery
JS实现新建文件夹功能
2017/06/17 Javascript
Iphone手机、安卓手机浏览器控制默认缩放大小的方法总结(附代码)
2017/08/18 Javascript
使用 Node.js 实现图片的动态裁切及算法实例代码详解
2018/09/29 Javascript
webpack项目使用eslint建立代码规范实现
2019/05/16 Javascript
node学习笔记之读写文件与开启第一个web服务器操作示例
2019/05/29 Javascript
解决vue scoped scss 无效的问题
2020/09/04 Javascript
利用js canvas实现五子棋游戏
2020/10/11 Javascript
[54:05]DOTA2-DPC中国联赛定级赛 SAG vs iG BO3第一场 1月9日
2021/03/11 DOTA
简单了解OpenCV是个什么东西
2017/11/10 Python
儿童python练习实例
2018/05/27 Python
利用css3-animation实现逐帧动画效果
2016/03/10 HTML / CSS
HTML5+CSS设置浮动却没有动反而在中间且错行的问题
2020/05/26 HTML / CSS
浅析HTML5 Landmark
2020/09/11 HTML / CSS
篝火晚会主持词
2014/03/25 职场文书
自强之星事迹材料
2014/05/12 职场文书
《秋思》教学反思
2016/02/23 职场文书
Golang中channel的原理解读(推荐)
2021/10/16 Golang
pytorch中的torch.nn.Conv2d()函数图文详解
2022/02/28 Python