码迷,mamicode.com
首页 > Web开发 > 详细

php设计模式-观察者模式

时间:2020-07-23 01:49:57      阅读:93      评论:0      收藏:0      [点我收藏+]

标签:highlight   user   lob   observer   观察者   this   undo   subject   次数   

/**
 * 观察对象
 * Undocumented class
 */
class User implements SplSubject
{
    public $loginCnt;

    private $observers;

    public function __construct()
    {
        $this->observers = new SplObjectStorage;
    }

    public function login()
    { 
        $this->loginCnt = rand(1,30);
        $this->notify();
    }

    public function attach(SplObserver $observer)
    {
       $this->observers->attach($observer);
    }

    public function detach(SplObserver $observer)
    {
        $this->observers->detach($observer);
    }

    public function notify()
    {
        foreach($this->observers as $observer) {
            $observer->update($this);
        }
    }
}

/**
 * 观察者
 * Undocumented class
 */
class Security implements SplObserver
{
    public function update(SplSubject $subject)
    {
        if ($subject->loginCnt > 10) {
            echo ‘登录次数过多‘;
        } else {
            echo ‘登录正常‘;
        }
    }
}

$user = new User();
$user->attach(new Security());
$user->login();

  

php设计模式-观察者模式

标签:highlight   user   lob   observer   观察者   this   undo   subject   次数   

原文地址:https://www.cnblogs.com/xiangdongsheng/p/13363852.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!