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.ini中文版
Oct 09 PHP
自动跳转中英文页面
Oct 09 PHP
MYSQL环境变量设置方法
Jan 15 PHP
php curl的深入解析
Jun 02 PHP
PHP设计模式之迭代器模式的深入解析
Jun 13 PHP
mcrypt启用 加密以及解密过程详细解析
Aug 07 PHP
PHP之APC缓存详细介绍 apc模块安装
Jan 13 PHP
PHP中调用SVN命令更新网站方法
Jan 07 PHP
ThinkPHP进程计数类Process用法实例详解
Sep 25 PHP
PHP中header函数的用法及其注意事项详解
Jun 13 PHP
PHP实现活动人选抽奖功能
Apr 19 PHP
完美的php分页类
Oct 24 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的朋友 经常问的一些问题。不断更新
2011/08/11 PHP
PHP APC缓存配置、使用详解
2014/03/06 PHP
PHP中filter函数校验数据的方法详解
2015/07/31 PHP
php生成高清缩略图实例详解
2015/12/07 PHP
PHP验证类的封装与使用方法详解
2019/01/10 PHP
javascript iframe编程相关代码
2009/12/28 Javascript
对xmlHttp对象的理解
2011/01/17 Javascript
angularjs表格ng-table使用备忘录
2016/03/09 Javascript
JavaScript中闭包的详解
2017/04/01 Javascript
BootStrap表单时间选择器详解
2017/05/09 Javascript
详解Vue.js搭建路由报错 router.map is not a function
2017/06/27 Javascript
jQuery完成表单验证的实例代码(纯代码)
2017/09/30 jQuery
Nuxt项目支持eslint+pritter+typescript的实现
2019/05/20 Javascript
微信小程序基于高德地图查找位置并显示文字
2019/10/30 Javascript
浅谈Node新版本13.2.0正式支持ES Modules特性
2019/11/25 Javascript
[36:33]完美世界DOTA2联赛PWL S2 LBZS vs Forest 第二场 11.29
2020/12/02 DOTA
Python中lambda的用法及其与def的区别解析
2014/07/28 Python
Python多进程同步Lock、Semaphore、Event实例
2014/11/21 Python
python实现txt文件格式转换为arff格式
2018/05/31 Python
Django项目开发中cookies和session的常用操作分析
2018/07/03 Python
python 3.6.4 安装配置方法图文教程
2018/09/18 Python
django主动抛出403异常的方法详解
2019/01/04 Python
美国成衣女装品牌:CHICO’S
2016/09/19 全球购物
Michael Kors加拿大官网:购买设计师手袋、手表、鞋子、服装等
2019/03/16 全球购物
PatPat德国:妈妈的每日优惠
2019/10/02 全球购物
创联软件面试题笔试题
2012/10/07 面试题
应聘教师自荐书
2014/06/16 职场文书
处级干部反四风个人对照检查材料思想汇报
2014/09/27 职场文书
先进集体申报材料
2014/12/25 职场文书
地雷战观后感
2015/06/09 职场文书
投诉书格式范本
2015/07/02 职场文书
党员公开承诺书(2016最新版)
2016/03/24 职场文书
分析MySQL抛出异常的几种常见解决方式
2021/05/18 MySQL
css3 选择器
2022/05/11 HTML / CSS
在虚拟机中安装windows server 2008的图文教程
2022/06/28 Servers