PHP观察者模式示例【Laravel框架中有用到】
发布:smiling 来源: PHP粉丝网 添加日期:2021-10-01 16:38:52 浏览: 评论:0
这篇文章主要介绍了PHP观察者模式,结合实例形式分析了php观察者模式的简单定义与使用操作技巧,需要的朋友可以参考下.
本文实例讲述了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:
Tags: PHP观察者模式 Laravel
相关文章
- ·Laravel 5.6中的CURD操作(代码示例详解)(2020-01-15)
- ·如何在laravel 5中创建用于XSS防御的中间件? (2020-01-16)
- ·关于Laravel重定向的七种方法详解(2020-01-26)
- ·如何在laravel 5中使用DB事务?(2020-01-31)
- ·Laravel中如何给图片加水印?(2020-04-05)
- ·Laravel框架数据库CURD操作、连贯操作总结(2021-04-10)
- ·Laravel框架路由配置总结、设置技巧大全(2021-04-10)
- ·Laravel框架中扩展函数、扩展自定义类的方法(2021-04-10)
- ·跟我学Laravel之快速入门(2021-04-16)
- ·跟我学Laravel之安装Laravel(2021-04-16)
- ·跟我学Laravel之配置Laravel(2021-04-16)
- ·跟我学Laravel之请求(Request)的生命周期(2021-04-16)
- ·跟我学Laravel之路由(2021-04-16)
- ·跟我学Laravel之请求与输入(2021-04-17)
- ·跟我学Laravel之视图 & Response(2021-04-17)
- ·laravel安装和配置教程(2021-04-19)
推荐文章
热门文章
最新评论文章
- 写给考虑创业的年轻程序员(10)
- PHP新手上路(一)(7)
- 惹恼程序员的十件事(5)
- PHP邮件发送例子,已测试成功(5)
- 致初学者:PHP比ASP优秀的七个理由(4)
- PHP会被淘汰吗?(4)
- PHP新手上路(四)(4)
- 如何去学习PHP?(2)
- 简单入门级php分页代码(2)
- php中邮箱email 电话等格式的验证(2)