fspringveldt / silverstripe-event-mediator
基于中介者模式的 Silverstripe 事件发射器
dev-master
2017-01-09 22:10 UTC
Requires
Requires (Dev)
- silverstripe/sqlite3: ^1.4
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()
发送,供您查看。