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实现的MySQL数据浏览器
Mar 11 PHP
php 文件上传类代码
Aug 06 PHP
php中使用DOM类读取XML文件的实现代码
Dec 14 PHP
php上传文件,创建递归目录的实例代码
Oct 18 PHP
PHP不用递归遍历目录下所有文件的代码
Jul 04 PHP
PHP基于imap获取邮件实例
Nov 11 PHP
PHP的Laravel框架结合MySQL与Redis数据库的使用部署
Mar 21 PHP
PHP使用PHPExcel删除Excel单元格指定列的方法
Jul 06 PHP
php常用字符串String函数实例总结【转换,替换,计算,截取,加密】
Dec 07 PHP
form自动提交实例讲解
Jul 10 PHP
PHP获取日期对应星期、一周日期、星期开始与结束日期的方法
Jun 22 PHP
PHP设计模式之单例模式定义与用法分析
Mar 26 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 数组的合并、拆分、区别取值函数集
2010/02/15 PHP
php中使用Akismet防止垃圾评论的代码
2011/06/10 PHP
php smarty truncate UTF8乱码问题解决办法
2014/06/13 PHP
ThinkPHP3.1新特性之命名范围的使用
2014/06/19 PHP
php实现转换ubb代码的方法
2015/06/18 PHP
php PDO实现的事务回滚示例
2017/03/23 PHP
ExtJS 简介 让你知道extjs是什么
2008/12/29 Javascript
JS 类型转换常见方法小结
2010/05/31 Javascript
jq选项卡鼠标延迟的插件实例
2013/05/13 Javascript
微信小程序实现image组件图片自适应宽度比例显示的方法
2018/01/16 Javascript
教你如何用Node实现API的转发(某音乐)
2019/09/20 Javascript
Vue实现腾讯云点播视频上传功能的实现代码
2020/08/17 Javascript
基于Vue+Webpack拆分路由文件实现管理
2020/11/16 Javascript
[02:55]含熏伴清风,风行者至宝、屠夫身心及典藏宝瓶二展示
2020/09/08 DOTA
python抓取网页内容示例分享
2014/02/24 Python
利用QT写一个极简单的图形化Python闹钟程序
2015/04/07 Python
Python实现将一个正整数分解质因数的方法分析
2017/12/14 Python
在Pycharm中对代码进行注释和缩进的方法详解
2019/01/20 Python
python画图把时间作为横坐标的方法
2019/07/07 Python
Windows10下 python3.7 安装 facenet的教程
2019/09/10 Python
python实现宿舍管理系统
2019/11/22 Python
详解PyQt5信号与槽的几种高级玩法
2020/03/24 Python
浅析Python打包时包含静态文件处理方法
2021/01/15 Python
美国新蛋IT数码商城:Newegg.com
2016/07/21 全球购物
美国奢侈品购物平台:Orchard Mile
2018/05/02 全球购物
Carmen Sol官网:购买果冻鞋、手袋和配件
2021/01/01 全球购物
数控技术专业毕业自荐书范文
2014/02/05 职场文书
读书伴我成长演讲稿
2014/05/07 职场文书
领导班子四风对照检查材料
2014/09/23 职场文书
个人先进材料范文
2014/12/30 职场文书
合同纠纷调解书
2015/05/20 职场文书
2015医院个人工作总结范文
2015/05/21 职场文书
地球上的星星观后感
2015/06/02 职场文书
心理健康教育主题班会
2015/08/13 职场文书
python数据可视化JupyterLab实用扩展程序Mito
2021/11/20 Python
windows系统安装配置nginx环境
2022/06/28 Servers