温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

如何在PHP中应用观察者模式

发布时间:2021-06-09 16:44:44 来源:亿速云 阅读:180 作者:Leah 栏目:开发技术

如何在PHP中应用观察者模式?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。

具体如下:

<?php //观察者模式 //抽象主题类 interface Subject {   public function attach(Observer $Observer);   public function detach(Observer $observer);   //通知所有注册过的观察者对象   public function notifyObservers(); } //具体主题角色 class ConcreteSubject implements Subject {   private $_observers;   public function __construct()   {     $this->_observers = array();   }   //增加一个观察者对象   public function attach(Observer $observer)   {     return array_push($this->_observers,$observer);   }   //删除一个已经注册过的观察者对象   public function detach(Observer $observer)   {     $index = array_search($observer,$this->_observers);     if($index === false || !array_key_exists($index, $this->_observers)) return false;     unset($this->_observers[$index]);     return true;   }   //通知所有注册过的观察者   public function notifyObservers()   {     if(!is_array($this->_observers)) return false;     foreach($this->_observers as $observer)     {       $observer->update();     }     return true;   } } //抽象观察者角色 interface Observer {   //更新方法   public function update(); } //观察者实现 class ConcreteObserver implements Observer {   private $_name;   public function __construct($name)   {     $this->_name = $name;   }   //更新方法   public function update()   {     echo 'Observer'.$this->_name.' has notify';   } } $Subject = new ConcreteSubject(); //添加第一个观察者 $observer1 = new ConcreteObserver('baixiaoshi'); $Subject->attach($observer1); echo 'the first notify:'; $Subject->notifyObservers(); //添加第二个观察者 $observer2 = new ConcreteObserver('hurong'); echo '<br/>second notify:'; $Subject->attach($observer2); /*echo $Subject->notifyObservers(); echo '<br/>'; $Subject->notifyObservers();*/ ?>

运行结果:

the first notify:Observerbaixiaoshi has notify
second notify:

看完上述内容,你们掌握如何在PHP中应用观察者模式的方法了吗?如果还想学到更多技能或想了解更多相关内容,欢迎关注亿速云行业资讯频道,感谢各位的阅读!

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

php
AI