对于 PHP,我经常集成 Symfony 事件组件:http ://components.symfony-project.org/event-dispatcher/ 。
下面是一个简短的例子,你可以在 Symfony 的食谱部分找到扩展。
<?php
class Foo
{
protected $dispatcher = null;
// Inject the dispatcher via the constructor
public function __construct(sfEventDispatcher $dispatcher)
{
$this->dispatcher = $dispatcher;
}
public function sendEvent($foo, $bar)
{
// Send an event
$event = new sfEvent($this, 'foo.eventName', array('foo' => $foo, 'bar' => $bar));
$this->dispatcher->notify($event);
}
}
class Bar
{
public function addBarMethodToFoo(sfEvent $event)
{
// respond to event here.
}
}
// Somewhere, wire up the Foo event to the Bar listener
$dispatcher->connect('foo.eventName', array($bar, 'addBarMethodToFoo'));
?>
这是我们集成到购物车中的系统,以创建类似游戏的购物体验,将用户操作与游戏事件挂钩。当用户执行特定操作时,php 触发事件导致触发奖励。
示例 1:如果用户点击特定按钮 10 次,他们会收到一颗星。
示例 2:当用户推荐朋友并且该朋友注册时,触发事件以奖励原始推荐人积分。