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 相关文章推荐
消息持续发送的完整例子
Oct 09 PHP
关于文本留言本的分页代码
Oct 09 PHP
使用Limit参数优化MySQL查询的方法
Nov 12 PHP
PHP5.2中date()函数显示时间与北京时间相差8小时的解决办法
May 28 PHP
php采用file_get_contents代替使用curl实例
Nov 07 PHP
php 使用curl模拟登录人人(校内)网的简单实例
Jun 06 PHP
php使用escapeshellarg时中文被过滤的解决方法
Jul 10 PHP
php微信支付接口开发程序
Aug 02 PHP
Laravel重写用户登录简单示例
Oct 08 PHP
php实现与python进行socket通信的方法示例
Aug 30 PHP
PHP PDOStatement::bindParam讲解
Jan 30 PHP
PHP常用字符串输出方法分析(echo,print,printf及sprintf)
Mar 09 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/01/05 PHP
浅析PHP原理之变量(Variables inside PHP)
2013/08/09 PHP
一个简单且很好用的php分页类
2013/10/26 PHP
php将12小时制转换成24小时制的方法
2015/03/31 PHP
php pthreads多线程的安装与使用
2016/01/19 PHP
PHP页面输出时js设置input框的选中值
2016/09/30 PHP
ThinkPHP5.1+Ajax实现的无刷新分页功能示例
2020/02/10 PHP
PHP7 新增功能
2021/03/09 PHP
自写的jQuery异步加载数据添加事件
2014/05/15 Javascript
自定义函数实现IE7与IE8不兼容js中trim函数的问题
2015/02/03 Javascript
javascript 用函数实现继承详解
2016/05/28 Javascript
Bootstrap常用组件学习(整理)
2017/03/24 Javascript
全面解析Node.js 8 重要功能和修复
2017/06/02 Javascript
实例解析Vue.js下载方式及基本概念
2018/05/11 Javascript
使用pkg打包Node.js应用的方法步骤
2018/10/19 Javascript
JS实现将对象转化为数组的方法分析
2019/01/21 Javascript
js如何实现元素曝光上报
2019/08/07 Javascript
javascript 设计模式之享元模式原理与应用详解
2020/04/08 Javascript
nodejs中使用worker_threads来创建新的线程的方法
2021/01/22 NodeJs
python抓取京东商城手机列表url实例代码
2013/12/18 Python
Python 40行代码实现人脸识别功能
2017/04/02 Python
python自动发邮件库yagmail的示例代码
2018/02/23 Python
Python 元类实例解析
2018/04/04 Python
利用pyinstaller打包exe文件的基本教程
2019/05/02 Python
Python自动化xpath实现自动抢票抢货
2020/09/19 Python
button在IE6/7下的黑边去除方案
2012/12/24 HTML / CSS
德国机场停车位比较和预订网站:Ich-parke-billiger
2018/01/08 全球购物
口腔工艺技术专业毕业生自荐信
2013/09/27 职场文书
产品质量承诺书范文
2014/03/27 职场文书
青年志愿者活动总结
2014/04/26 职场文书
父亲节活动策划方案
2014/08/24 职场文书
运动会跳远广播稿5篇
2014/09/17 职场文书
大学生实训报告总结
2014/11/05 职场文书
后备干部推荐材料
2014/12/24 职场文书
幼儿教师个人总结
2015/02/05 职场文书
2019大学生暑期实习心得总结
2019/08/21 职场文书