让我们来创建一个简单的用于产生事件并且同时进行监听的类。听起来满困难的,但是却是常被使用的技术 interface MyEventListener { function onMyEvent(EventObject $event); } class MyClass implements MyEventListener { protected $listeners; function __construct() { $this->listeners = new ListenerList(); $this->addMyEventListener($this); } function addMyEventListener(MyEventListener $listener) { $this->listeners->add($listener); } function work() { echo "Working!\n"; $this->fireMyEvent(); echo "Working!\n"; $this->fireMyEvent(); echo "Working!\n"; } protected function fireMyEvent() { $event = new EventObject($this); foreach ($this->listeners->getRaw() as $listener) { $listener->onMyEvent($event); } } function onMyEvent(EventObject $event) { echo "Taking short break...\n"; } } $object = new MyClass(); $object->work(); // Will print: // Working! // Taking short break... // Working! // Taking short break... // Working! 使用事件描述模式,可以增进你的代码的稳定性,但是要注意的是他要在你的代码中添加很多接口和事件类,这样比没使用前执行要慢。
关于网站 | 客服中心 | 服务条款 | 友情链接 | 广告联系 | 本站历程 | 网站导航
吉ICP备05000107号