dev-master
9999999-devA Silverstripe event emitter based on the mediator pattern
BSD-3-Clause
The Requires
The Development Requires
by Franco Springveldt
events silverstripe event mediator aspects
A Silverstripe event emitter based on the mediator pattern
A SilverStripe event emitter based on the mediator pattern, which can be applied to run a bit of code before or after any class method (i.e. triggered) using Silverstripe's Aspects, (*1)
"silverstripe/framework": "3.*" "composer"
To install, run below from root of SilverStripe installation:, (*2)
> composer require fspringveldt/silverstripe-event-mediator
http://your-site-url?flush=1 once composer is complete the flush the manifest., (*3)
Installing the module adds the eventMediator\EventExtension
to DataObject.
Let's say after each call to $A->foo()
you'd like to fire off a call to $B->bar()
, the following added to your composer.yml sets up the events:, (*4)
Injector: eventMediator\EventMediator': properties: events: foo: triggerBar: class: B method: bar
then in $A->foo()
do the following:, (*5)
class A{ function foo(){ //foo funciton body $this->emit(__FUNCTION__); } }
Let's say after each call to $A->foo()
you'd like to fire off a call to $B->bar()
, the following in your composer.yml should do the trick:, (*6)
Injector: 'eventMediator\EventMediator': properties: events: foo: triggerBar: class: B method: bar ProxiedA: class: A A: class: AopProxyService properties: proxied: %$ProxiedA afterCall: foo: - %$eventMediator\EventMediator'
All parameters from $A->foo()
are sent through $B->foo()
for your perusal., (*7)
A Silverstripe event emitter based on the mediator pattern
BSD-3-Clause
events silverstripe event mediator aspects