php设计模式-观察者模式

Posted itxds

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了php设计模式-观察者模式相关的知识,希望对你有一定的参考价值。

/**
 * 观察对象
 * 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设计模式-观察者模式的主要内容,如果未能解决你的问题,请参考以下文章

设计模式 行为型模式 -- 观察者模式(发布-订阅(Publish/Subscribe)模式)

PHP 设计模式之观察者模式

PHP观察者模式

设计模式之观察者模式--PHP

PHP设计模式笔记七:观察者模式 -- Rango韩老师 http://www.imooc.com/learn/236

php--观察者模式