5.1 事件Event
Minor的 Event 類提供一個簡單的觀察者實現,允許您在應用程序裡訂閱與監聽事件。
5.1.1 訂閱事件
首先創建一個事件類:
<?php
namespace App\Event;
use Minor\Event\Event;
class DemoEvent extends Event
{
private $name;
public function __construct($name)
{
$this->name = $name;
}
public function setName($name)
{
$this->name = $name;
}
public function getName()
{
return $this->name;
}
}
然後在配置文件中注冊這個事件:
<?php
return $events = [
'App\Event\DemoEvent' => [
'App\Listener\DemoListener' => 'handle',
],
];
5.1.2 觸發事件
Minor提供了一個事件管理類:Minor\Event\EventManger,通過調用該類的靜態方法fire:EventManager::fire($event)就可以觸發這個事件,例:
class FooController extends Controller
{
public function bar($productName)
{
$event = new DemoEvent('DemoEvent');
EventManager::fire($event);
...
}
}
5.2 監聽器
當觸發事件後事件管理器EventManager就會通過配置文件去觸發監聽器的制定方法。在5.1.1配置文件中我們配置了DemoEvent的監聽器為App\Listener\DemoListener的handle方法,可以看一下這個類的實現:
<?php
namespace App\Listener;
use App\Event\DemoEvent;
use Minor\Event\Listener;
class DemoListener extends Listener
{
public function handle(DemoEvent $event)
{
echo '[DemoListener] handle the event:[' . $event->getName() .'] success!<br/><br/>';
}
}