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 5.0对象模型深度探索之属性和方法
Mar 27 PHP
PHP 第三节 变量介绍
Apr 28 PHP
PHP中redis的用法深入解析
Feb 20 PHP
PHP批量上传图片的具体实现方法介绍.
Feb 26 PHP
php 模拟 asp.net webFrom 按钮提交事件实例
Oct 13 PHP
PHP中遇到的时区问题解决方法
Jul 23 PHP
php在windows环境下获得cpu内存实时使用率(推荐)
Feb 08 PHP
PHP连接MySQL数据库并以json格式输出
May 21 PHP
PHP从尾到头打印链表实例讲解
Sep 27 PHP
PHP实现的只保留字符串首尾字符功能示例【隐藏部分字符串】
Mar 11 PHP
php更新cookie内容的详细方法
Sep 30 PHP
laravel 实现登陆后返回登陆前的页面方法
Oct 03 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若干单维数组遍历方法的比较
2011/09/20 PHP
基于php设计模式中单例模式的应用分析
2013/05/15 PHP
PHP Cookie的使用教程详解
2013/06/03 PHP
PHP使用file_get_content设置头信息的方法
2016/02/14 PHP
Jquery优化效率 提升性能解决方案
2010/09/06 Javascript
jQuery中的$.ajax()方法应用
2014/05/06 Javascript
JS制作手机端自适应缩放显示
2015/06/11 Javascript
javascript中去除数组重复元素的实现方法【实例】
2016/04/12 Javascript
Angular和百度地图的结合实例代码
2016/10/19 Javascript
微信小程序 scroll-view组件实现列表页实例代码
2016/12/14 Javascript
纯js实现动态时间显示
2020/09/07 Javascript
js中时间格式化的几种方法
2018/07/22 Javascript
ES6 中可以提升幸福度的小功能
2018/08/06 Javascript
angularJs中ng-model-options设置数据同步的方法
2018/09/30 Javascript
js变量值传到php过程详解 将php解析成数据
2019/06/26 Javascript
Vue学习之常用指令实例详解
2020/01/06 Javascript
vue-cli脚手架的.babelrc文件用法说明
2020/09/11 Javascript
JavaScript实现HTML导航栏下拉菜单
2020/11/25 Javascript
Python的词法分析与语法分析
2013/05/18 Python
详解Python3.1版本带来的核心变化
2015/04/07 Python
python+pandas生成指定日期和重采样的方法
2018/04/11 Python
浅谈Tensorflow由于版本问题出现的几种错误及解决方法
2018/06/13 Python
python字符串切割:str.split()与re.split()的对比分析
2019/07/16 Python
解决Python中回文数和质数的问题
2019/11/24 Python
Python3 main函数使用sys.argv传入多个参数的实现
2019/12/25 Python
带你彻底搞懂python操作mysql数据库(cursor游标讲解)
2020/01/06 Python
pip已经安装好第三方库但pycharm中import时还是标红的解决方案
2020/10/09 Python
python爬虫调度器用法及实例代码
2020/11/30 Python
python 如何用urllib与服务端交互(发送和接收数据)
2021/03/04 Python
HUGO BOSS美国官方网上商店:世界知名奢侈品牌
2017/08/04 全球购物
eDreams意大利:南欧领先的在线旅行社
2018/11/23 全球购物
工程安全生产协议书
2014/11/21 职场文书
微信早安问候语
2015/11/10 职场文书
JavaScript高级程序设计之基本引用类型
2021/11/17 Javascript
MySQL 外连接语法之 OUTER JOIN
2022/04/09 MySQL
vue实现Toast组件轻提示
2022/04/10 Vue.js