校园春色亚洲色图_亚洲视频分类_中文字幕精品一区二区精品_麻豆一区区三区四区产品精品蜜桃

主頁 > 知識庫 > PHP觀察者模式實例分析【對比JS觀察者模式】

PHP觀察者模式實例分析【對比JS觀察者模式】

熱門標簽:余姚電話機器人 電銷機器人問門薩維品牌my 廣東廣州在怎么申請400電話 咸寧銷售電銷機器人系統 百度地圖標注偏差 外呼系統能給企業帶來哪些好處 百度地圖怎樣標注圖標 400電話蘭州申請請 開發地圖標注類網站

本文實例講述了PHP觀察者模式。分享給大家供大家參考,具體如下:

1.用js實現觀察者模式

!DOCTYPE html>
html>
head>
    title>/title>
    style type="text/css">
    div{width: 100px;height: 100px;border: 1px #999 solid;margin-bottom: 5px;}
    /style>
/head>
body>
!--
我們讓div對象觀察select的變化,selecte變化就會通知這個2個對象,并引起這2個對象的變化,實現觀察者模式。
 -->
 h1>用觀察者模式切換頁面風格/h1>
 select>
     option value="male">男式風格/option>
     option value="female">女士風格/option>
 /select>
 button onclick="t1()">觀察學習區/button>
 button onclick="t2()">不觀察學習區/button>
 div id="content">我是內容/div>
 div id="ad">我是廣告/div>
 div id="study">學習/div>
/body>
script type="text/javascript">
    var sel = document.getElementsByTagName('select')[0];
    sel.observers = {};
    sel.attach = function(key,obj){
        this.observers[key] = obj;
    }
    sel.detach = function(key){
        delete this.observers[key];
    }
    sel.onchange = sel.notify = function(){
        for(var key in this.observers){
            this.observers[key].update(this);
        }
    }
    //客戶端
    var content = document.getElementById('content');
    var ad = document.getElementById('ad');
    content.update = function(ob){
        if (ob.value == 'male') {
            this.style.backgroundColor = 'gray';
        }else if(ob.value == 'female'){
            this.style.backgroundColor = 'pink';
        }
    }
    ad.update = function(ob){
        if (ob.value == 'male') {
            this.innerHTML = '汽車';
        }else if(ob.value == 'female'){
            this.innerHTML = '減肥';
        }
    }
    //讓content觀察select的變化
    sel.attach('content',content);
    sel.attach('ad',ad);
    //新增監聽study區
    var study = document.getElementById('study');
    study.update = function(ob){
        if (ob.value == 'male') {
            this.innerHTML = '學習計算機';
        }else if(ob.value == 'female'){
            this.innerHTML = '學習美容';
        }
    }
    sel.attach('study',study);
    function t1(){
        sel.attach('study',study);
    }
    function t2(){
        sel.detach('study');
    }
/script>
/html>

2.用php實現觀察模式

?php
//php實現觀察者
//php5中提供觀察者observer和被觀察者subject的接口
class User implements SplSubject
{
    public $lognum;
    public $hobby;
    protected $observers = null;
    public function __construct($hobby)
    {
        $this->lognum = rand(1,10);
        $this->hobby = $hobby;
        $this->observers = new SplObjectStorage();
    }
    public function login()
    {
        //操作session等
        $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();
        }
    }
}
//用戶安全登錄模塊
class Safe implements SPLObserver
{
    public function update(SplSubject $subject)
    {
        if ($subject->lognum  3) {
            echo '這是第' . $subject->lognum . '次安全登錄br>';
        }else{
            echo '這是第' . $subject->lognum . '次登錄,異常br>';
        }
    }
}
//廣告模塊
class Ad implements SPLObserver
{
    public function update(SplSubject $subject)
    {
        if ($subject->hobby == 'sports') {
            echo '英超開始啦br>';
        }else{
            echo '好好學習br>';
        }
    }
}
//實施觀察
// $user = new User('sports');
$user = new User('study');
$user->attach(new Safe());
$user->attach(new Ad());
$user->login();//登錄

更多關于PHP相關內容感興趣的讀者可查看本站專題:《php面向對象程序設計入門教程》、《PHP數組(Array)操作技巧大全》、《PHP基本語法入門教程》、《PHP運算與運算符用法總結》、《php字符串(string)用法總結》、《php+mysql數據庫操作入門教程》及《php常見數據庫操作技巧匯總》

希望本文所述對大家PHP程序設計有所幫助。

您可能感興趣的文章:
  • PHP設計模式之觀察者模式入門與應用案例詳解
  • PHP 觀察者模式深入理解與應用分析
  • php模式設計之觀察者模式應用實例分析
  • PHP使用觀察者模式處理異常信息的方法詳解
  • php設計模式之觀察者模式定義與用法經典示例
  • PHP中常用的三種設計模式詳解【單例模式、工廠模式、觀察者模式】
  • PHP設計模式之觀察者模式定義與用法分析
  • PHP觀察者模式定義與用法實例分析
  • 解析PHP觀察者模式Observer

標簽:十堰 鷹潭 臨沂 銅陵 衡陽 麗江 巴彥淖爾 重慶

巨人網絡通訊聲明:本文標題《PHP觀察者模式實例分析【對比JS觀察者模式】》,本文關鍵詞  PHP,觀察者,模式,實例分析,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《PHP觀察者模式實例分析【對比JS觀察者模式】》相關的同類信息!
  • 本頁收集關于PHP觀察者模式實例分析【對比JS觀察者模式】的相關信息資訊供網民參考!
  • 推薦文章
    主站蜘蛛池模板: 山西省| 澜沧| 七台河市| 疏附县| 盖州市| 马尔康县| 蕉岭县| 成安县| 太保市| 桂东县| 微博| 濉溪县| 都昌县| 九龙县| 台州市| 布尔津县| 喀喇沁旗| 申扎县| 东安县| 防城港市| 昭苏县| 武宁县| 平阳县| 定南县| 桦川县| 双江| 瑞金市| 长海县| 宜良县| 建德市| 来宾市| 蒲城县| 西昌市| 邯郸市| 措美县| 广州市| 益阳市| 鄂温| 筠连县| 杂多县| 永新县|