fspringveldt/silverstripe-event-mediator

基于中介者模式的 Silverstripe 事件发射器

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

This package is auto-updated.

Last update: 2024-09-13 11:36:17 UTC


README

一个基于中介者模式的 SilverStripe 事件发射器,可以在任何类方法(即触发)之前或之后运行一小段代码(例如使用 Silverstripe 的 Aspects

要求

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

安装

要安装,请在 SilverStripe 安装根目录下运行以下命令

> composer require fspringveldt/silverstripe-event-mediator

http://your-site-url?flush=1 一旦 composer 完成,刷新清单。

##配置 1 - 扩展基于(默认)安装模块会将 eventMediator\EventExtension 添加到 DataObject。假设每次调用 $A->foo() 后,您想触发对 $B->bar() 的调用,以下添加到您的 composer.yml 中设置事件

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

然后在 $A->foo() 中执行以下操作

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

##配置 2 - 使用 AopProxyService 的方面假设每次调用 $A->foo() 后,您想触发对 $B->bar() 的调用,以下在您的 composer.yml 中应能解决问题

Injector:
  'eventMediator\EventMediator':
    properties:
      events:
        foo:
          triggerBar:
            class: B
            method: bar
  ProxiedA:
    class: A
  A:
    class: AopProxyService
    properties:
      proxied: %$ProxiedA
      afterCall:
        foo:
          - %$eventMediator\EventMediator'

$A->foo() 发送的参数都通过 $B->foo() 发送,供您查看。