yii中使用event dispatcher

本文介绍了如何在Yii框架中配置并使用EventDispatcher组件实现事件驱动编程。通过详细步骤展示了组件的安装配置方法,并提供了实际应用案例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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;
}
......

}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值