SplSubject 内容产述
来源:互联网 发布:优斗士网络推广效果 编辑:程序博客网 时间:2024/06/09 19:48
<?phpnamespace app\common\model;use SplObserver;use SplSubject;use SplObjectStorage;class User implements SplSubject{ private $email; private $username; private $mobile; private $password; /** * @var SplObjectStorage */ private $observers = NULL; public function __construct($email, $username, $mobile, $password) { $this->email = $email; $this->username = $username; $this->mobile = $mobile; $this->password = $password; $this->observers = new SplObjectStorage(); } public function attach(SplObserver $observer) { $this->observers->attach($observer); } public function detach(SplObserver $observer) { $this->observers->detach($observer); } public function notify() { $userInfo = array( 'username' => $this->username, 'password' => $this->password, 'email' => $this->email, 'mobile' => $this->mobile, ); foreach ($this->observers as $observer) { $observer->update($this, $userInfo); } } public function create() { echo __METHOD__, PHP_EOL; $this->notify(); } public function changePassword($newPassword) { echo __METHOD__, PHP_EOL; $this->password = $newPassword; $this->notify(); } public function resetPassword() { echo __METHOD__, PHP_EOL; $this->password = mt_rand(100000, 999999); $this->notify(); }}<?php namespace app\myinterface; class WebsiteSender implements \SplObserver { public function update(\SplSubject $subject) { $userInfo = func_get_arg(1); echo "向 {$userInfo['email']} 发送站内信成功。内容是:你好 {$userInfo['username']}" . "你的新密码是 {$userInfo['password']},请妥善保管"; echo PHP_EOL; } }
$email_sender = new EmailSender(); $mobile_sender = new MobileSender(); $web_sender = new WebsiteSender(); $user = new User('user1@domain.com', '张三', '13610002000', '123456'); // 创建用户时通过 Email 和手机短信通知用户$user->attach($email_sender);$user->attach($mobile_sender);$user->create($user); echo '<br/>'; // 用户忘记密码后重置密码,还需要通过站内小纸条通知用户$user->attach($web_sender);$user->resetPassword(); echo '<br/>'; // 用户变更了密码,但是不要给他的手机发短信$user->detach($mobile_sender);echo '<br/>';$user->changePassword('654321');echo PHP_EOL;如果我的文章对你有帮助,就请博主喝杯咖啡吧
阅读全文
0 0
- SplSubject 内容产述
- android Studio Git命令--解决冲突和产看提交内容
- 卧底付费专栏盗版群一个月,我们聊聊付费内容的地下黑产
- PHP 观察者模式 PHP SplSubject SplObserver 接口实现
- 新浪的“产经”
- 恒大地产好事多磨
- 转载各地产出品
- 产次登陆
- 产品类的操作
- 预产渐近
- 母牛产牛问题
- spring 产品族
- hibernate 产品族
- 比较两个字符产
- 准时化生产
- C语言产随机数
- 兔子产兔
- 产看ubuntu版本
- SPOJ
- VC中的lambda
- LeetCode 523. Continuous Subarray Sum
- Tensorflow 运算设备的配置
- 随笔----致曾经的寻知图
- SplSubject 内容产述
- Easy UI使用记录
- 基础Activity文件
- web.xml里配置load-on-startup的意思
- oracle的数据扫描方式
- 轮廓系数
- prim模板(hdu1102为例)
- IntelliJ Idea 集成svn 和使用
- Android Telephony分析(三) ---- RILJ详解