一个基于PHP的事件机制
一个基于PHP的事件机制
一个基于PHP的事件机制
<?php
//EventUtils:
final class EventArgs {
}
interface EventHandler {
public function Invoke($Sender, EventArgs $E);
}
class Event {
private $EventHandlerList = array ();
public function AddEventHandler(EventHandler $EventHandler) {
$this->EventHandlerList[] = $EventHandler;
}
public function DeleteEventHandler(EventHandler $EventHandler) {
$Index = array_search($EventHandler, $this->EventHanlerList);
array_splice($this->EventHanlerList, $Index, 1);
}
public function Invoke($Sender, EventArgs $E) {
foreach ($this->EventHandlerList as $EventHandler) {
$EventHandler->Invoke($Sender, $E);
}
}
}
//Test Case:
class TestEventHandler implements EventHandler {
public function Invoke($Sender, EventArgs $E) {
// echo "Hello, ".$Sender;
}
}
TestEvent();
function TestEvent() {
$Event = new Event();
$EventHandler = new TestEventHandler();
$Event->AddEventHandler($EventHandler);
$Event->Invoke($Event, new EventArgs());
}
//Output:
//Hello, Object id #5ok.
?>
- 上一篇:PHP判断网络文件是否存在
- 下一篇:用PHP实现的事件机制
精彩图集
精彩文章






