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 相关文章推荐
MySQL授权问题总结
May 06 PHP
php 动态执行带有参数的类方法
Apr 10 PHP
PHP 字符串编码截取函数(兼容utf-8和gb2312)
May 02 PHP
用PHP将数据导入到Foxmail的实现代码
Sep 05 PHP
php的$_FILES的临时储存文件与回收机制实测过程
Jul 12 PHP
PHP+Mysql实现多关键字与多字段生成SQL语句的函数
Nov 05 PHP
php 魔术方法详解
Nov 11 PHP
WordPress网站性能优化指南
Nov 18 PHP
详解PHP编码转换函数应用技巧
Oct 22 PHP
PHP定义字符串的四种方式详解
Feb 06 PHP
ThinkPHP5 验证器的具体使用
May 31 PHP
Laravel框架路由设置与使用示例
Jun 12 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_array的作用
2013/06/07 PHP
php获取淘宝分类id示例
2014/01/16 PHP
php上传图片并压缩的实现方法
2015/12/22 PHP
详谈配置phpstorm完美支持Codeigniter(CI)代码自动完成(代码提示)
2017/04/07 PHP
PHP添加PNG图片背景透明水印操作类定义与用法示例
2019/03/12 PHP
PHP7中I/O模型内核剖析详解
2019/04/14 PHP
[JS]点出统计器
2020/10/11 Javascript
深入领悟JavaScript中的面向对象
2013/11/18 Javascript
Jquery跳到页面指定位置的方法
2014/05/12 Javascript
JQuery实现展开关闭层的方法
2015/02/17 Javascript
JavaScript中计算网页中某个元素的位置
2015/06/10 Javascript
jquery 追加元素append、prepend、before、after用法与区别分析
2016/12/02 Javascript
最常用的jQuery表单验证(简单)
2017/05/23 jQuery
NodeJs生成sitemap站点地图的方法示例
2019/06/11 NodeJs
JavaScript函数柯里化实现原理及过程
2020/12/02 Javascript
python实现数据预处理之填充缺失值的示例
2017/12/22 Python
Php多进程实现代码
2018/05/07 Python
Python之文字转图片方法
2018/05/10 Python
python 以16进制打印输出的方法
2018/07/09 Python
python绘制散点图并标记序号的方法
2018/12/11 Python
python 输入字符串生成所有有效的IP地址(LeetCode 93号题)
2020/10/15 Python
html5弹跳球示例代码
2013/07/23 HTML / CSS
html2 canvas生成清晰的图片实现打印功能
2019/09/23 HTML / CSS
Android面试题附答案
2014/12/08 面试题
汽车技术服务与营销专业在籍生自荐信
2013/09/28 职场文书
法学专业应届生求职信
2013/10/16 职场文书
化工专业应届生求职信
2013/11/08 职场文书
个人求职信范文分享
2014/01/06 职场文书
文字自荐书范文
2014/02/10 职场文书
小学生操行评语
2014/04/22 职场文书
数字化校园建设方案
2014/05/03 职场文书
刑事辩护授权委托书格式
2014/10/13 职场文书
2015自愿离婚协议书范本
2015/01/28 职场文书
合作与交流自我评价
2015/03/09 职场文书
导游词之千岛湖
2019/09/23 职场文书
导游词之云南丽江-泸沽湖
2019/09/26 职场文书