扫一扫
分享文章到微信
扫一扫
关注官方公众号
至顶头条
在本页阅读全文(共19页)
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;
}
}
function TestEvent() {
$Event = new Event();
$EventHandler = new TestEventHandler();
$Event->AddEventHandler($EventHandler);
$Event->Invoke($Event, new EventArgs());
}
Output:
Hello, Object id #5ok.
支持Multicast
麻烦的是,PHP不支持internal class,这个机制可能还要修改。
查看更多左轻侯文章
查看本文来源如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。
现场直击|2021世界人工智能大会
直击5G创新地带,就在2021MWC上海
5G已至 转型当时——服务提供商如何把握转型的绝佳时机
寻找自己的Flag
华为开发者大会2020(Cloud)- 科技行者