博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
PHP观察者模式的简单实现
阅读量:7070 次
发布时间:2019-06-28

本文共 2008 字,大约阅读时间需要 6 分钟。

PHP5.0以上版本内置了观察者模式的实现。

观察者模式应用的场景:

1,比如新增加用户的时候,需要给用户发送邮件和短信进行通知。我们的主程序就是完成用户的增其,其他方法对进行发短信和通知。

2,具体的代码使用如下

email; } public function getName() { return $this->name; } public function getSex() { return $this->sex; } public function setEmail($email) { $this->email = $email; } public function setName($name) { $this->name = $name; } public function setSex($sex) { $this->sex = $sex; } public function __construct($name,$email,$sex) { $this->name=$name; $this->email=$email; $this->sex=$sex; $this->observs=new SplObjectStorage(); } public function attach(SplObserver $observer) { $this->observs->attach($observer); } public function detach(SplObserver $observer) { $this->observs->detach($observer); } public function notify() { foreach($this->observs as $obs) { $obs->update($this); } } public function crete() { echo "新增了一个名为{
$this->name}的用户
"; $this->notify(); } public function resetpwd() { echo "用户{
$this->name}重置了密码
"; $this->notify(); }}//观察者class sendmsg implements SplObserver{ public function update(SplSubject $subject) { echo "我要发短信了,给用户{
$subject->getName()}
"; }}class sendemail implements SplObserver{ public function update(SplSubject $subject) { echo "我给{
$subject->getName()}发邮件了
"; }}//测试脚本$user=new User("小花猫","小花猫@小花猫","猫猫");$sendemail=new sendemail();$sendmsg=new sendmsg();$user->attach($sendemail);//注册发邮件的事件$user->attach($sendmsg);//发留言信息$user->crete();echo "我要重置密码
";$user->detach($sendmsg);$user->resetpwd();

其中user方法实现了spl的接口splsubject,观察者实现了splObserver接口。对于spl是个什么东西,请参考   今天发现php.net改版了!现在一些东西在上边都很好找。

转载于:https://www.cnblogs.com/minbbp/p/3161208.html

你可能感兴趣的文章
「续集」Sass简易指南:多风格编译和运行以及文件注释
查看>>
JAVA导出EXCEL
查看>>
11.14/11.15 Apache和PHP结合 11.16/11.17 Apache默认虚拟主机
查看>>
TeeChart Pro VCL/FMX教程(六):使用系列(一)
查看>>
Dubbo分析之Cluster层
查看>>
Titan Framework MongoDB深入理解3
查看>>
iOS核心动画笔记2-寄宿图
查看>>
几种不同类型网站内容优化切入点
查看>>
SaltSack入门(三)Salt相关命令和Pillar应用
查看>>
文件上传相关内容
查看>>
Linux下Nodejs安装(完整详细)
查看>>
OSChina 周四乱弹 —— 想换行了怎么办,别说按回车键
查看>>
ubuntu11.04安装JDK7及配置环境
查看>>
SpringBoot+Logback+Sentry(日志监控平台)
查看>>
vmware10中开启Intel VT-x
查看>>
一般wsdl生成的类都比较大,IDEA类文件大小限制导致无法加载该类问题
查看>>
Android 垂直Tab
查看>>
Android DecorView与ViewRootImpl
查看>>
goroutine 相关知识7
查看>>
redis命令学习笔记
查看>>