`
lfq618
  • 浏览: 87787 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

zend framework插件机制

阅读更多

ZF中的“插件”提供了对页面动作的扩展接口,只需实现Zend_Controller_Plugin_Abstract的相应方法。
文档中说道:

  1. routeStartup() 在 Zend_Controller_Front 向注册的Router发送请求前被调用。
  2. routeShutdown() 在Router完成请求的路由后被调用。
  3. dispatchLoopStartup() 在 Zend_Controller_Front 进入其分发循环(dispatch loop)前被调用。
  4. preDispatch() 在动作由Dispatcher分发前被调用。该回调方法允许代理或者过滤行为。通过修改请求和重设分发标志位(利用 Zend_Controller_Request_Abstract::setDispatched(false) )当前动作可以跳过或者被替换。
  5. postDispatch() 在动作由Dispatcher分发后被调用。该回调方法允许代理或者过滤行为。通过修改请求和重设分发标志位(利用 Zend_Controller_Request_Abstract::setDispatched(false) )可以指定新动作进行分发。
  6. dispatchLoopShutdown() 在 Zend_Controller_Front 推出其分发循环后调用。

代码中可以看到,Zend_Controller_Front在构造函数中初始化了Zend_Controller_Plugin_Broker(维护了 一个Plugin列表_plugins),之后在registerPlugin中把对应的Plugin加入到列表中,触发事件的时候会依次调用 _plugins列表中的Plugin调用响应的方法。

自定义的插件继承自Zend_Controller_Plugin_Abstract,然后使用Zend_Controller_Front的registerPlugin方法注册即可:

class MyPlugin extends Zend_Controller_Plugin_Abstract 
{
    
public function routeStartup(Zend_Controller_Request_Abstract $request)
    {
        
$this->getResponse()->appendBody("<p>routeStartup() called</p>"n");
    }

    
public function routeShutdown(Zend_Controller_Request_Abstract $request)
    {
        
$this->getResponse()->appendBody("<p>routeShutdown() called</p>"n");
    }

    
public function dispatchLoopStartup(Zend_Controller_Request_Abstract $request)
    {
        
$this->getResponse()->appendBody("<p>dispatchLoopStartup() called</p>"n");
    }

    
public function preDispatch(Zend_Controller_Request_Abstract $request)
    {
        
$this->getResponse()->appendBody("<p>preDispatch() called</p>"n");
    }

    
public function postDispatch(Zend_Controller_Request_Abstract $request)
    {
        
$this->getResponse()->appendBody("<p>postDispatch() called</p>"n");
    }

    
public function dispatchLoopShutdown()
    {
        
$this->getResponse()->appendBody("<p>dispatchLoopShutdown() called</p>"n");
    }
}

Zend_Controller_Front
::getInstance()->registerPlugin(new MyPlugin());




错误处理(Zend_Controller_Plugin_ErrorHandler)

Zend_Controller_Plugin_ErrorHandler默认的Action为"error",Controller是"Error"。 所以自定义一个继承自Zend_Controller_Action的类ErrorController、实现errorAction方法、创建 error.phtml就可以让Zend_Controller_Plugin_ErrorHandler找到了。

若在Zend_Controller_Front::dispatch()前设置了'noErrorHandler'为true则不加载Zend_Controller_Plugin_ErrorHandler。
若设置了Zend_Controller_Front::throwExceptions(true)则出错时直接throw,不写到_response的$_exceptions列表中。

分享到:
评论

相关推荐

    基于Zend Framework 框架的CMS PHP 源代码

    Zend Framework推崇“选择性使用”原则,开发者可以根据项目需求选择使用其中的部分或全部组件,极大地提高了开发效率和代码质量。 **二、CMS系统的核心功能** CMS系统通常包含以下核心功能: 1. **内容创建与...

    Zend Framework教程之Zend_Controller_Plugin插件用法详解

    在Zend Framework中,`Zend_Controller_Plugin`是一个强大的机制,允许开发者在应用程序的不同阶段插入自定义的行为,以扩展和增强其功能。插件系统提供了一种灵活的方式,可以在请求生命周期的关键点进行干预,如...

    ZendFramework最新版本

    这个“最新版本”指的是 Zend Framework 的 1.11.10 版本,它包含了 MVC(Model-View-Controller)架构模式,这是 Web 开发中常用的设计模式,用于分离应用程序的不同部分,提升代码的可读性和可维护性。 1. **MVC ...

    ZendFrameWork 1.11.10

    10. **社区支持**:作为开源项目,Zend Framework拥有庞大的开发者社区,提供丰富的资源、文档和插件,使得学习和解决问题更为便捷。 总结来说,Zend Framework 1.11.10为PHP开发者提供了一个强大且灵活的开发环境...

    ZendFramework-1.12.9 手册 (HTML版)

    **一、Zend Framework简介** Zend Framework 是一个开源、基于组件的 PHP 框架,它遵循 Model-View-Controller (MVC) 设计模式,为开发高质量、可扩展的 Web 应用程序提供了强大的基础。此版本1.12.9是该框架的一个...

    最新zend framework 中文手册

    **Zend Framework 中文手册** Zend Framework 是一个基于 Model-View-Controller (MVC) 设计模式的开源PHP Web应用程序框架,它提供了一组强大的工具和服务,帮助开发者构建高质量的、可扩展的Web应用。该框架遵循...

    php-smarty 还有zend framework

    Zend Framework的核心组件包括: Zend_Controller(MVC模式的实现),Zend_Db(数据库抽象层),Zend_View(视图处理),以及Zend_Auth和Zend_Acl(身份验证和访问控制)。此外,Zend Framework还遵循了PSR(PHP框架...

    ZendFramework框架配置...

    7. **事件系统**:Zend Framework 还包含了事件管理组件,允许开发者订阅和触发事件,以实现功能的扩展和插件机制。配置事件监听器和处理器可以在 `events.config.php` 文件中完成。 8. **缓存配置**:为了提高性能...

    Beginning Zend Framework [PHP] (Apress 2009).pdf

    本书《Beginning Zend Framework》由Armando Padilla编写,旨在为读者提供一个全面深入地了解Zend Framework的机会。作为一款广泛使用的PHP框架,Zend Framework在Web开发领域扮演着重要的角色。本书通过系统性的...

    zendframework结构应用示例图

    通过上述两个工作流程的分析,我们可以清楚地看到 Zend Framework 在处理请求时的内部机制。基本请求工作流程主要关注于请求的初始化和配置阶段,而前端控制器分发工作流程则专注于具体请求的处理和分发逻辑。这种...

    Zend_Framework 中文手册

    插件管理机制使得扩展和自定义 Zend Framework 的功能变得简单,通过实现特定接口或继承特定基类,开发者可以创建自己的插件。 10. **自动加载(Autoloading)** Zend Framework 实现了PSR-0和PSR-4标准的自动...

    基于Zend Framework 制作的博客

    **基于Zend Framework 制作的博客** Zend Framework是一款开源、基于PHP 5的MVC(Model-View-Controller)框架,旨在提供灵活、高性能的Web应用程序开发。它遵循企业级的开发标准,提供了丰富的组件库,支持面向...

    Smarty jquery_api Zend_Framework_zh

    标题 "Smarty jquery_api Zend_Framework_zh" 涵盖了三个关键的IT技术:Smarty、jQuery API和Zend Framework,这些都是Web开发中非常重要的组件。这些技术的中文版本表示它们是针对中文用户群体,方便国内开发者学习...

    2010年图书:PHP插件: 100个强大的方案

    标签中提到的“Zend”和“ZendFramework”表明本书会涵盖使用Zend Framework进行插件开发的相关知识,包括但不限于: 1. **组件化开发**:如何利用Zend Framework的模块化和组件化特性,创建可复用的插件。 2. **...

    Zend Framework路由器用法实例详解

    路由器是Zend Framework中非常重要的一个组件,它是决定如何将请求映射到相应的模块、控制器和动作的核心机制。路由在Zend Framework中的作用是处理URL的解析过程,将URL的各个部分(模块、控制器、动作及参数)提取...

    Zend Framework教程之Bootstrap类用法概述

    其中,Bootstrap类是Zend Framework中用于应用程序引导和初始化的核心机制。Zend_Application_Bootstrap_Bootstrapper是所有引导类必须实现的基本接口,它提供了配置应用程序、注册资源以及引导应用程序的方法。 ...

Global site tag (gtag.js) - Google Analytics