首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

yii中运用event dispatcher

2012-12-22 
yii中使用event dispatcheryii中使用event dispatcher一、安装与配置1,原理与安装event dispatcher主要是用

yii中使用event dispatcher
yii中使用event dispatcher

一、安装与配置
1,原理与安装
event dispatcher主要是用来解耦,否则不要使用,因为相对而言,算是重量级的应用。

参考官方网址:
http://components.symfony-project.org/event-dispatcher/


2,在yii中的配置
在Yii的配置文件../config/main.php中引用

//预加载,即在load前载入该组件'preload'=>array('log', 'exception_watcher', 'os_handler', 'fp_handler'),//注册组件'components'=>array(......//注册event dispatcher'dispatcher' => array('class' => 'application.extensions.event_dispatcher.EventDispatcher'),'fp_handler' => array('class' => 'application.components.FailPartsHandler',),......),


3,注册组件时引入的EventDispatcher.php
require_once dirname(__FILE__) . '/event-dispatcher/lib/sfEventDispatcher.php';/** * It's a simple wrapper for sfEventDispatcher * */class EventDispatcher  extends sfEventDispatcher {public function init() {}}


二、使用
1,在函数中使用
$event = new sfEvent($this, 'failParts.create', array('Oid'=>$params['Oid']));$str = Yii::app()->dispatcher->notify($event);return $str->getReturnValue();


2,在component/XXHandler.php文件中调用
class FailPartsHandler {     public function init() {$dispatcher = Yii::app()->dispatcher;$handlers = array('failParts.create'   => 'onCreate','failParts.partsMans'   => 'onPartsMans','failParts.workers'  => 'onGetWorkers','failParts.floors'  => 'onGetFloorsByIdcName','failParts.sendApprove'  => 'onSendApprove','failParts.rmsPreShow'  => 'onRMSPreShow','failParts.outConfirm'  => 'onOutConfirm',);// event名称  回调函数foreach($handlers as $event_name => $handle_method) {$dispatcher->connect($event_name, array($this, $handle_method));}}    public function onCreate($event) {// 1,通过$event传回参数$outsource = $event->getSubject();$Oid = $event['Oid'];// 2,调用XX soap接口(非模拟)$result = $this->getRMSClient()->getServerInfoByOid(RMSClient::buildHeader(),$Oid);// 3,将从XX获取的数据返回调用函数$event->setReturnValue($result);return true;}        ......}

热点排行