当前位置:首页 > Web开发 > 正文

出现异常登录br " ;}}} // 新闻推送-观察者 class PushNews implements SplObs

2024-03-31 Web开发

php供给的两个接口,,一个被不雅察看者接口SplSubject,一个或多个不雅察看者接口SPLObserver,和一个可以储存东西的类SplObjectStorage。被不雅察看者有三个要领,需要实现这三个要领,一个attach可以理解为添加一个不雅察看者,detach可以理解为删除去一个不雅察看者,一个notify里面做循环执行被不雅察看者的update要领(被不雅察看者被存储在SplObjectStorage类里面),update要领把本类作为参数传进去。

 

<?php header("Content-type:text/html;charset=utf-8"); /** * */ class Login implements SplSubject { public $hobby; public $loginTimes; protected $observers = null; function __construct($hobby) { $this->hobby = $hobby; $this->loginTimes = rand(1,10); $this->observers = new SplObjectStorage(); } public function login() { // login业务逻辑编写 $this->notify(); } public function attach(SPLObserver $observer) { $this->observers->attach($observer); } public function detach(SPLObserver $observer) { $this->observers->detach($observer); } public function notify() { // $this->observers->rewind();//将内部指针指向开始处 // while ($this->observers->valid()) { // $observer= $this->observers->current();//获取当前东西 // $observer->update($this); // $this->observers->next();//将指针往下走一位 // } foreach ($this->observers as $value) { $value->update($this); } } } //用户推送-不雅察看者 class PushUser implements SplObserver { public function update(SplSubject $subject)//传进来一个被不雅察看者 { //写本身的业务逻辑 if ($subject->hobby == sport) { echo "推送运动产品<br>"; }else{ echo "推送热门产品<br>"; } } } //安适信息推送-不雅察看者 class PushSecurity implements SplObserver { public function update(SplSubject $subject)//传进来一个被不雅察看者 { //写本身的业务逻辑 if ($subject->loginTimes < 5) { echo "你今天第".$subject->loginTimes."次安适登录<br>"; }else{ echo "你今天第".$subject->loginTimes."次安适登录,呈现异常登录<br>"; } } } //新闻推送-不雅察看者 class PushNews implements SplObserver { public function update(SplSubject $subject) { //写本身的业务逻辑 if ($subject->hobby == sport) { echo "推送运动新闻<br>"; }else{ echo "推送热门新闻<br>"; } } } $user= new Login(sport);//创建一个实现了被不雅察看者的接口类 $user->attach(new PushNews());//传进去一个实现了不雅察看者的接口类 $user->attach(new PushUser()); $user->attach(new PushSecurity()); $user->login();

php设计模式之不雅察看者模式实例代码

温馨提示: 本文由Jm博客推荐,转载请保留链接: https://www.jmwww.net/file/web/31728.html