成人精品一区二区三区中文字幕-成人精品一区二区三区-成人精品一级毛片-成人精品亚洲-日本在线视频一区二区-日本在线视频免费

導航首頁 ? 技術教程 ? PHP觀察者模式原理與簡單實現方法示例
全站頭部文字 我要出現在這里
PHP觀察者模式原理與簡單實現方法示例 797 2023-12-08   

本文實例講述了PHP觀察者模式原理與簡單實現方法。分享給大家供大家參考,具體如下:

當一個對象狀態發生改變后,會影響到其他幾個對象的改變,這時候可以用觀察者模式。像wordpress這樣的應用程序中,它容外部開發組開發插件,比如用戶授權的博客統計插件、積分插件,這時候可以應用觀察者模式,先注冊這些插件,當用戶發布一篇博文后,就回自動通知相應的插件更新。

觀察者模式符合接口隔離原則,實現了對象之間的松散耦合。

觀察者模式UML圖:

查看圖片

在php SPL中已經提供SplSubject和SqlOberver接口

interface SplSubject
{
  function attach(SplObserver $observer);
  function detach(SplObserver $observer);
  function notify();
}
interface SqlObserver
{
  function update(SplSubject $subject);
}

下面具體實現上面例子

class Subject implements SplSubject
{
  private $observers;
  public function attach(SplObserver $observer)
  {
    if (!in_array($observer, $this->observers)) {
      $this->observers[] = $observer;
    }
  }
  public function detach(SplObserver $observer)
  {
    if (false != ($index = array_search($observer, $this->observers))) {
      unset($this->observers[$index]);
    }
  }
  public function post()
  {
    //post相關code
    $this->notify();
  }
  private function notify()
  {
    foreach ($this->observers as $observer) {
      $observer->update($this);
    }
  }
  public function setCount($count)
  {
    echo "數據量加" . $count;
  }
  public function setIntegral($integral)
  {
     echo "積分量加" . $integral;
  }
}
class Observer1 implements SplObserver
{
  public function update($subject)
  {
    $subject-> setCount(1);
  }
}
class Observer2 implements SplObserver
{
  public function update($subject)
  {
    $subject-> setIntegral(10);
  }
}
class Client
{
  public function test()
  {
    $subject = new Subject();
    $subject->attach(new Observer1());
    $subject->attach(new Observer2());
    $subject->post();//輸出:數據量加1 積分量加10
  }
}

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

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


主站蜘蛛池模板: 朴新阳| 重口视频| 河东舞曲的士高| 成龙电影全部电影作品大全| 好看的港剧| 欧美艹| 山东生活频道| 西海情歌原歌词全文| 女生被侵犯的视频| 流萤美图| 监禁逃亡2| 隐藏的秘密电影免费观看全集| 形象管理| a级免费电影| 头文字d演员| 《摧花狂魔》电影| 洛城僵尸| 大学生职业规划ppt成品| 11.27| 欧布奥特曼年代记| 你是我的命运电影| 蛋仔图片100张| 风中花瓣| 小强升职记| 奥真奈美| 红灯区未删减版| 拔萝卜电影| 黄视频在线播放| 救命 电影| 电视直播pro| 孽子 电影| 1—36集电视剧在线观看| 岑建勋| 草刈正雄| 蛇魔女大闹都市| 成人免费高清在线视频| 小鹏奇啪行| 昆虫总动员2免费观看完整版| 画画的视频| 甲种公牛1976| 来势凶猛|

!!!站長長期在線接!!!

網站、小程序:定制開發/二次開發/仿制開發等

各種疑難雜癥解決/定制接口/定制采集等

站長微信:lxwl520520

站長QQ:1737366103