Zend_Application 与 Zend_Controller_Front的研究

Zend/Controller包是Zend Framework MVC 的核心部分。也可以说是 Zend Framework 中最复杂的部分了。可以说搞清楚了Zend/Controller的复杂流程,就明白了半个Zend Framework。

打开类Zend_Controller_Front中的方法getInstance()会发现是一个静态方法。因为是为了实现单件模式,

<!--

Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/

--> $front = Zend_Controller_Front :: getInstance();

便可获得Zend_Controller_Front类的唯一实例。

Zend_Controller_Front 配置

对Zend_Controller_Front进行配置通过set方法和add方法来实现,如setParam和setControllerDirectory。

对 Zend_Controller_Front 进行配置的引导资源类是 Zend_Application_Resource_Frontcontroller 类

Zend_Application_Resource_Frontcontroller 类的init()方法,根据配置文件对Zend_Controller_Front类进行了配置。

index.php中通过实例化Zend_Application类,加载ini配置信息。

$application = new Zend_Application(
APPLICATION_ENV,
APPLICATION_PATH . '/configs/application.ini'

以下是一个样例Ini配置文件,显示了如何配置模块目录

[yourenvironment ]
resources.frontController.controllerDirectory.default
= APPLICATION_PATH " /default/controllers "
resources.frontController.controllerDirectory.blog
= APPLICATION_PATH " /blog/controllers "
resources.frontController.params.displayExceptions
= 0

这段配置跟以下代码的作用是相同的:

 
    
$front = Zend_Controller_Front :: getInstance();
$front -> setControllerDirectory( array ( " default " => APPLICATION_PATH . " /default/controllers " ,
" blog " => APPLICATION_PATH . " /blog/controllers " ));
$front -> setParam( " displayExceptions " , 0 );
 
 
 

Zend_Controller_Front主要方法:

dispatch()方法,是Zend_Controller_Front类的最主要的方法。

在Zend Framework 1.10 ,你在大多数时候都不需要直接调用dispatch()方法。当你调用Zend_Application的run()方法的时候,Zend_Application把你的请求委托给Zend_Application_Bootstrap_Bootstrap的run()方法,而 Zend_Application_Bootstrap_Bootstrap的run()方法又把你的请求委托给 Zend_Controller_Front的dispatch()方法。因此,你调用 Zend_Application的run()方法的时候,实际上最后是调用 Zend_Controller_Front的dispatch()方法。

dispatch()方法做的事情有:

初始化默认的插件(Zend_Controller_Plugin_ErrorHandler错误处理插件)和控制器助手(Zend_Controller_Action_Helper_ViewRenderer视图渲染助手),初始化请求类(Zend_Controller_Request_Http),响应类(Zend_Controller_Response_Http),路由类(Zend_Controller_Router_Rewrite)和分发类(Zend_Controller_Dispatcher_Standard),并开始路由分发(把分发工作委托给分发类),最后,由响应类输出处理(或返回)。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值