Zend Framework的Zend_Controller实现主要涉及到的文件如下:
root@coder-671T-M:/ZendFramework-1.11.11/library/Zend/Controller# tree
.
├── Action
│ ├── Exception.php
│ ├── Helper
│ │ ├── Abstract.php
│ │ ├── ActionStack.php
│ │ ├── AjaxContext.php
│ │ ├── AutoComplete
│ │ │ └── Abstract.php
│ │ ├── AutoCompleteDojo.php
│ │ ├── AutoCompleteScriptaculous.php
│ │ ├── Cache.php
│ │ ├── ContextSwitch.php
│ │ ├── FlashMessenger.php
│ │ ├── Json.php
│ │ ├── Redirector.php
│ │ ├── Url.php
│ │ └── ViewRenderer.php
│ ├── HelperBroker
│ │ └── PriorityStack.php
│ ├── HelperBroker.php
│ └── Interface.php
├── Action.php
├── Dispatcher
│ ├── Abstract.php
│ ├── Exception.php
│ ├── Interface.php
│ └── Standard.php
├── Exception.php
├── Front.php
├── Plugin
│ ├── Abstract.php
│ ├── ActionStack.php
│ ├── Broker.php
│ ├── ErrorHandler.php
│ └── PutHandler.php
├── Request
│ ├── Abstract.php
│ ├── Apache404.php
│ ├── Exception.php
│ ├── Http.php
│ ├── HttpTestCase.php
│ └── Simple.php
├── Response
│ ├── Abstract.php
│ ├── Cli.php
│ ├── Exception.php
│ ├── Http.php
│ └── HttpTestCase.php
└── Router
├── Abstract.php
├── Exception.php
├── Interface.php
├── Rewrite.php
├── Route
│ ├── Abstract.php
│ ├── Chain.php
│ ├── Hostname.php
│ ├── Interface.php
│ ├── Module.php
│ ├── Regex.php
│ └── Static.php
└── Route.php
10 directories, 52 files
Zend_Controller提供的具体功能如下:
- Zend_Controller_Front前端控制器
主要用于初始化请求环境,根据请求路由,分发动作,收集响应。
- Zend_Controller_Action
主要功能是实现Action动作的基本功能。Zend_Controller_Action是一个抽象类,
配合前端控制器使用一起来实现动作控制器。动作控制器必须继承此类。
- Zend_Controller_Action_Helper
通过动作助手可以为动作控制器提供一些辅助功能。例如常见的助手有Cache,FlashMessenger,Json, Redirector,Url, ViewRenderer。
- Zend_Controller_Dispatcher
主要用于路由的分发
- Zend_Controller_Plugin
用于注册用户插件
- Zend_Controller_Request
请求对象是在前端控制器,路由器,分发器,以及控制类间传递的简单值对象。请求对象封装了请求的模块,控制器,动作以及可选的参数,还包括其他的请求环境,如HTTP,CLI,PHP-GTK。
- Zend_Controller_Response
响应对象逻辑上是请求对象的搭档.目的在于收集消息体和/或消息头,因而可能返回大批的结果。
- Zend_Controller_Router
Zend_Controller_Router是标准的路由器。路由是个过程,在这个过程中它取出URI的端点(跟着基本URL的URI的那部分)并把它分解成参数来决定哪个模块、哪个控制器和控制器中的哪个动作应该接受请求。模块、控制器、动作和其它参数被打包到Zend_Controller_Request_Http对象,接着这个对象由Zend_Controller_Dispatcher_Standard来处理。路由只发生一次:当请求最初被接收和第一个控制器被派遣之前。
![](http://hi.csdn.net/attachment/201202/1/0_1328075954P846.gif)