fspringveldt/silverstripe-event-mediator

This package is not installable via Composer 1.x, please make sure you upgrade to Composer 2+. Read more about our Composer 1.x deprecation policy.

A Silverstripe event emitter based on the mediator pattern

dev-master 2017-01-09 22:10 UTC

This package is auto-updated.

Last update: 2021-10-13 05:00:08 UTC


README

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

Requirements

"silverstripe/framework": "3.*"
"composer"

Installation

To install, run below from root of SilverStripe installation:

> composer require fspringveldt/silverstripe-event-mediator

http://your-site-url?flush=1 once composer is complete the flush the manifest.

##Configuration 1 - Extension based (default) 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:

Injector:
  eventMediator\EventMediator':
    properties:
      events:
        foo:
          triggerBar:
            class: B
            method: bar

then in $A->foo() do the following:

class A{
    function foo(){
        //foo funciton body
        
        $this->emit(__FUNCTION__);
    }
}

##Configuration 2 - Aspect using AopProxyService 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:

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.