bwoester / yii-event-interceptor
一个组件,允许拦截由被观察组件引发的的事件。
v1.0.2
2015-01-02 11:58 UTC
Requires
- php: >=5.1.0
This package is not auto-updated.
Last update: 2024-09-24 01:36:59 UTC
README
EventInterceptor 是一个 CComponent,当被观察的组件引发事件时,会触发 onEventIntercepted 事件。onEventIntercepted 事件包含拦截事件的名称以及拦截事件本身。
它主要作为其他组件的工具,可以像这样使用
// create interceptor $eventInterceptor = new EventInterceptor(); // initialize it: pass the object that should be observed. By default, the // EventInterceptor will attach itself to all events defined by $subject. // If you only want to intercept some special events, use: // $eventInterceptor->initialize( $subject, array('onFoo', 'onBar') ); $eventInterceptor->initialize( $subject ); // whenever the EventInterceptor intercepted an event of $subject, it will // raise an onEventIntercepted event. Attach an event handler to this event // that cares for processing. The event handler can be any valid php callback: // $eventInterceptor->onEventIntercepted = 'handleInterceptedEvent_inGlobalFunction'; // $eventInterceptor->onEventIntercepted = array( 'Foo', 'handleInterceptedEvent_inStaticMethod' ); // $eventInterceptor->onEventIntercepted = array( $obj, 'handleInterceptedEvent_inMethod' ); $eventInterceptor->onEventIntercepted = function( InterceptionEvent $event ) { $sender = $event->sender; // will always be the EventInterceptor $originalEvent = $event->getInterceptedEvent(); $originalSender = $event->getInterceptedEvent()->sender; // our $subject // also available: $originalEventName = $event->getInterceptedEventName(); };