- <?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.
- ?>
- //该片段来自于http://www.codesnippet.cn/detail/220320132516.html
来源: http://www.codesnippet.cn/detail/220320132516.html