• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

PHP观察者模式

原作者: [db:作者] 来自: [db:来源] 收藏 邀请
  1 <?php
2 /**
3 * 观察者模式(被观察者)
4 *
5 * @author Administrator
6 *
7 */
8 class Subject implements SplSubject {
9
10 /**
11 * 设置的参数
12 *
13 * @var mixed
14 */
15 protected $_value;
16
17 /**
18 *
19 *
20 * @var SplObjectStorage
21 */
22 protected $_observers;
23
24 /**
25 * 构造函数
26 *
27 * @return void
28 */
29 public function __construct() {
30 $this->_observers = new SplObjectStorage();
31 }
32
33 /**
34 * (non-PHPdoc)
35 * @see SplSubject::attach()
36 */
37 public function attach(SplObserver $observer) {
38 $this->_observers->attach($observer);
39 }
40
41 /**
42 * (non-PHPdoc)
43 * @see SplSubject::detach()
44 */
45 public function detach(SplObserver $observer) {
46 $this->_observers->detach($observer);
47 }
48
49 /**
50 * (non-PHPdoc)
51 * @see SplSubject::notify()
52 */
53 public function notify() {
54 foreach ($this->_observers as $observer) {
55 $observer->update($this);
56 }
57 }
58
59 /**
60 * 设置最新值
61 *
62 * @param mixed $value
63 * @return
64 */
65 public function setValue($value) {
66 $this->_value = $value;
67 $this->notify();
68 }
69
70 /**
71 * 获取最后更新的值
72 *
73 * @return mixed
74 */
75 public function getValue() {
76 return $this->_value;
77 }
78 }
79
80 /**
81 * 观察者模式(观察者)
82 *
83 * @author Administrator
84 *
85 */
86 class Observer implements SplObserver {
87
88 /**
89 * (non-PHPdoc)
90 * @see SplObserver::update()
91 */
92 public function update(SplSubject $subject) {
93 var_dump('最后更新时间为:' . $subject->getValue());
94 }
95 }
96
97 date_default_timezone_set('Asia/Shanghai');
98 error_reporting(E_ALL);
99 $subject = new Subject();
100 $observer = new Observer();
101 $subject->attach($observer);
102 $subject->setValue(date('Y-m-d H:i:s', time()));

 

 


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
PHP数据库抽象层--PDO(PHPDataObject)[一]发布时间:2022-07-10
下一篇:
PHP保留两位小数的几种方法发布时间:2022-07-10
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap