zend_controller

引导文件index.php中使用

Zend_Controller_Front::run('/path/to/app/controllers');

来启动Zend_Controller_Front类,此类用于分配请求到的不同控制器(这是最简单的启动Zend_Controller的方法)。
Zend_Controller_Router_Interface用来定义路由器

前端控制器:
前端控制器默认加载ErrorHandler插件以及ViewRenderer动作助手,若要禁用,在调用dispatch()之前使用:

$front->setParam('noErrorHandler', true);
$front->setParam('noViewRenderer', true);

不充:也可以在控制器动作中通过$this->_helper->removeHelper('viewRenderer');禁用当前行为的viewRender。s

方法:
1、getInstance()
获取前段控制器实例

$front = Zend_Controller_Front::getInstance();

2、setControllerDirectory()和addControllerDirectory()
setControllerDirectory()通知分发起到哪查找动作控制器action controller类文件。参数接受单一路径和模块/路径对关联数组。

$front->setControllerDirectory('../application/controllers');

同时设置模块和路径

$fromt->setControllerDirectory(array(
'blog'=>'../module/blog/controllers',
'news'=>'../modules/news/controllers'
));

增加一个'foo'模块路径

$front->addControllerDirectory('../modules/fo/controllers', 'foo');

(使用addControllerDirectory时不带模块名,default设定为默认目录)
getContrllerDirectory()获取控制器目录的当前设置;返回一个模块/目录对关联数组
完成前段控制器最繁重的工作。该方法带有可选的参数 请求对象和/或相应对象

1 dispatch(Zend_Controller_Request_Abstract $request= null,Zend_Controller_Response_Abstract $response = null)

run()

Zend_Controller_Front::run($path)

是静态方法,只有一个参数,就是指向包含控制器的目录的路径
如果不要求定制前端控制器环境,run()是一个很方便的建立前段控制器环境的方法。

Zend把路径信息标准化为小写,若想使用驼峰式的控制器和action命名规则,可以在url中使用'-'或'.'来分开,例如FooBarController::bazBatAction(),那么在url中链接时要用/foo-bar/baz-bat或/foo.bar/baz.bat。

环境访问器方法
resetInstance()方法清楚当前的所有设置
(set|get)DefaultControllerName()可以为默认的控制器指定另一个名字(否则使用index),以及获取当前值
(set|get)DefaultAction()
(set|get)Request()指定分发过程中使用的请求类或对象,以及获取当前的请求对象。设置请求对象时,可以传入一个请求类的名字,该方法将加载类文件夹并创建实例
(set|get)BaseUrl()方法指定路由请求时剥离(strip)的基地址(base URL),以及获取当前值。这个值将在路由前提供给路由器。
registerPlugin(Zend_Controller_Plugin_Abstract $plugin, $stackIndex = null)方法允许注册一个插件对象。通过设置可选参数$statckIndex,插件执行的顺序。
unregisterPlugin($plugin)方法移除插件对象
throwExceptions($flag)方法用来开启或者关闭分发过程中抛出异常的能力。默认一场引起并放置在响应对象中;开启throwExceptions()将覆盖这一行

 1 //创建一个controler实例
2 $ctrl = Zend_Controller_Front::getInstance();
3 //禁用ViewRenderer
4 $ctrl->setParam('noViewRander', true);
5
6 $ctrl->throwExceptions(true);
7 //创建controller控制器模块路径
8 $ctrl->setControllerDirectory(array(
9 'test'=>'application/test/controller',
10 'default'=>'application/default/controller'
11 ));
12
13 $ctrl->dispatch();
原文地址:https://www.cnblogs.com/gbyukg/p/2181620.html