Zend_Controller_Front 研究
如果你裸写php,一个项目就会出现很多的页面控制器(Page Controller),如果项目很大,重复代码就很多,越来越变得很难维护。有了问题,自然就有解决方案!于是前端设计模式 闪亮登场!
前端控制器建议集中处理所有请求的处理,前端控制器通过让单个控制器负责传输所有请求,从而解决了在 Page Controller 中存在的分散化问题。控制器本身通常分为以下两部分实现:处理程序和命令层次结构

一个前端控制器其本体包括两部分:一个分发中心(或叫调度处理程序)和一个command(或动作)层次结构。当一个请求到达服务器,前端控制器接收此请求,从其请求信息中获取足够的内容并决定下一步操作,然后委托给某个command,执行操作。
看了Zend_Controller_Front 源码 实现了» 模型-视图-控制器 (MVC)应用程序的» 前端控制器模式。目的在于初始化请求环境,并路由到来的请求,接着分发任何发现的动作;收集所有的响应,在整个过程完成时就其返回。 同是也实现了 单件(Singleton)模式,意味着任何时候,都只可能有一个有效实例。这使得它可以作为注册表,供分发过程中的其他对象引用。
下面是简单Zend_Controller_Front 简单类图
Zend_Controller_Front 把request 对象和response 对象 传到 dispatcher 对象,dispatcher 对象通过 request 找到相应的controller 和 action, 渲染试图!执行方法。还有管理plugin 和路由。
java 的 Strut1和Struts2里面的做法算是比较经典的两种前端控制器。Struts框架以XML配置方式体现,在strut.xml配置动作,在web.xml中配置过滤器。当然我并没有研究过ssh的理念,所以不在这里啰嗦了。感觉php好杂!没有自己的核心理念。以前的理念是面向过程,后来又加入面向对象东西!个人感觉php只是一个tool 而不是language。想深了玩,可以去研究c、c++、服务器。想向广了玩可以玩玩java,那才是面向对象的正统。纯属屌丝coder个人见解,不要人身攻击噢!
--EOF--
Zend_Controller_Front 研究的更多相关文章
- 闲来无聊,研究一下Web服务器 的源程序
web服务器是如何工作的 1989年的夏天,蒂姆.博纳斯-李开发了世界上第一个web服务器和web客户机.这个浏览器程序是一个简单的电话号码查询软件.最初的web服务器程序就是一个利用浏览器和web服 ...
- SQLSERVER聚集索引与非聚集索引的再次研究(上)
SQLSERVER聚集索引与非聚集索引的再次研究(上) 上篇主要说聚集索引 下篇的地址:SQLSERVER聚集索引与非聚集索引的再次研究(下) 由于本人还是SQLSERVER菜鸟一枚,加上一些实验的逻 ...
- 深入研究Visual studio 2017 RC新特性
在[Xamarin+Prism开发详解三:Visual studio 2017 RC初体验]中分享了Visual studio 2017RC的大致情况,同时也发现大家对新的Visual Studio很 ...
- 【初码干货】使用阿里云对Web开发中的资源文件进行CDN加速的深入研究和实践
提示:阅读本文需提前了解的相关知识 1.阿里云(https://www.aliyun.com) 2.阿里云CDN(https://www.aliyun.com/product/cdn) 3.阿里云OS ...
- 对一致性Hash算法,Java代码实现的深入研究
一致性Hash算法 关于一致性Hash算法,在我之前的博文中已经有多次提到了,MemCache超详细解读一文中"一致性Hash算法"部分,对于为什么要使用一致性Hash算法.一致性 ...
- SQLSERVER聚集索引与非聚集索引的再次研究(下)
SQLSERVER聚集索引与非聚集索引的再次研究(下) 上篇主要说了聚集索引和简单介绍了一下非聚集索引,相信大家一定对聚集索引和非聚集索引开始有一点了解了. 这篇文章只是作为参考,里面的观点不一定正确 ...
- 开源Word读写组件DocX 的深入研究和问题总结
一. 前言 前两天看到了asxinyu大神的[原创]开源Word读写组件DocX介绍与入门,正好我也有类似的自动生成word文档得需求,于是便仔细的研究了这个DocX. 我也把它融入到我的项目当中并进 ...
- 【移动端兼容问题研究】javascript事件机制详解(涉及移动兼容)
前言 这篇博客有点长,如果你是高手请您读一读,能对其中的一些误点提出来,以免我误人子弟,并且帮助我提高 如果你是javascript菜鸟,建议您好好读一读,真的理解下来会有不一样的收获 在下才疏学浅, ...
- Oracle研究专题:Oracle系统安装与配置
最近开始研究Oracle数据库,盖因公司的系统要么Oracle要么是mysql吧. 作为一个IT工作者,没有碰过Oracle是一件很匪夷所思得事情. 想到过去几年,乃至接触IT行业开始就只有玩过sql ...
随机推荐
- expect学习笔记及用法
expect学习笔记及实例详解 expect的基本用法 expect用法
- 第2章 Linux操作系统简介
1. Linux操作系统的构成 (1)内核(kernel) ①操作系统的核心,负责管理系统的进程.内存.设备驱动程序.文件和网络系统. ②控制系统和硬件之间的相互通信. ③决定着系统的性能和稳定性. ...
- Struts2单例和多例
struts2中action是多例的,即一个session产生一个action如果是单例的话,若出现两个用户都修改一个对象的属性值,则会因为用户修改时间不同,两个用户访问得到的属性不一样,操作得出的结 ...
- All sentinels down, cannot determine where is mymaster master is running...
修改配置的哨兵文件 vim /sentinel.conf 将保护模式关闭
- Docker,win10
win10:docker下载地址 直接下载docker ,no docker toolbox https://get.daocloud.io/toolbox/ 下载完成,双击安装,next知道完成安装 ...
- 网络通信和TCP详解
交换机.路由器.服务器组网 1. 通信过程(pc+switch+router+server) 较为复杂的通信过程如:访问 www.baidu.com 注意:一定要配置 PC:IP.NETMASK.DF ...
- pdf转换成可在线浏览的电子杂志zmaker_pdf
zmaker是曾经国内最流行的电子杂志制作软件,可惜可惜,不过幸好有人给发布了 最新版的 其实主要是2个流程 一个是软件的安装 软件的下载和安装请参考 官方教材 http://bbs.emaghome ...
- Selenium Webdriver——使用reportng
ReportNG is a simple HTML reporting plug-in for the TestNG unit-testing framework. It is intended as ...
- maven工程 ,通过maven更新后,jre恢复到1.5的解决方法
在maven setting.xml profiles节点下加入 <profile> <id>jdk-1.8</id> <activation> < ...
- 【333】Python3.6 格式化文本
看如下例子进行体会: min_temperature = 0 max_temperature = 300 step = 20 # \t: A tab print('Fahrenheit\tCelsiu ...