亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 語言 > PHP > 正文

PHP實現基于狀態的責任鏈審批模式詳解

2024-05-05 00:09:23
字體:
來源:轉載
供稿:網友

本文實例講述了PHP實現基于狀態的責任鏈審批模式。分享給大家供大家參考,具體如下:

我們開發網站,除了前后,還有后臺,除了內容管理,很多時候要涉及到『審批』。

比如:商務部要做個專題推廣活動,活動中需要調用一些商品做優惠。

1、商務部編輯先寫文案
2、商務部領導審批文案內容
3、商品部領導需要審批商品的價格和庫存(萬一沒貨呢)
4、后面可能還有好多領導要審批(帶擴展)

今天我們要引入的模式是『責任鏈模式』

在責任鏈模式里,很多對象由每一個對象對其下家的引用而連接起來,形成一條鏈條。請求在這個鏈條上傳遞,知道鏈條上的某一個對象決定處理次請求。發出這個請求的客戶端并不知道鏈條上哪一個對象最終處理這個請求。

為了演示方便,我們做價格設定。

1、假定層級關系是:商品部領導>商務部領導>編輯
2、假設只能一級級審批(也就是不能跳級,僅為了演示方便)
3、這里審批暫時不能回退

PHP,責任鏈,審批模式

(上圖:演示界面show.php)

show.php:

<?php  require('subject.php');  if ($_GET){    if (isset($_GET['createSubject'])){ //點擊創建文案后執行      $subject = new subject();      $subject->content = '文案的內容';      $subject->save();    }  }?><html>  <head>    <title>責任鏈-審批</title>    <style>      *{marign:0;padding:0}      .container{width:100%;margin: 0 auto;text-align: center}    </style>  </head>  <body>    <div class="container">      <div><h2>流程演示界面</h2></div>      <form method="get" action="show.php">        <div class="row">          <textarea name="" id="" cols="30" rows="10"></textarea>          <div>            <button name="createSubject">編輯創建文案</button>          </div>        </div>        <div class="row">          <hr>          <button name="step">領導審批</button>        </div>      </form>    </div>  </body></html>

編輯點擊『創建文案』提交內容,然后把文案寫到到本地json文件(保存)。文案的主題是subject.php:

<?phpclass subject{  public $content = ''; //文案內容  public $state = 0; //初試狀態  /**   * 保存內容(編輯保存)   */  public function save(){    //我們這里保存到本地文件    file_put_contents(__DIR__.'/subject.json',json_encode($this));    echo '文案已經創建成功';  }}

這個時候文案已經創建好了,需要進入審批

抽象類(領導)manager.php :

<?phpabstract class manager{  public $subject; //加載專題內容  public $mystate=0; //當前狀態,這個很重要  public $leader=false; //重要,設置自己的領導是誰  public $myname = ''; //當前審批者的名字  /**   * 設置領導是誰   * @param $leader   */  public function setLeader($leader)  {    $this->leader = $leader; //形成責任鏈的關鍵  }  public function __construct()  {    $str = file_get_contents(__DIR__.'/subject.json');    $this->subject = json_decode($str);  }  public function step($msg)  {    //很重要,代表審批    //只有當subject的state和自己的mystate相等是才會處理    if ($this->subject->state == $this->mystate){ //代表當前是自己要處理的      //在這執行審批通過的 具體      echo $msg . '審批制是:'.$this->myname;      //判斷自己的是否有領導,如果有把控制權交給領導      if ($this->leader){        $this->subject->state = $this->leader->mystate; //交控制權        file_put_contents(__DIR__.'/subject.json',json_encode($this->subject)); //保存狀態      }else{        echo '審批已經結束';      }    }else{      if ($this->leader){ //leader就是維護整個類的 鏈        //讓自己的領導去審批        $this->leader->step($msg);      }    }  }}

商務部領導,商品部領導,大boss都要繼承這個抽象類。

BusinessLeader.php

<?phpclass BusinessLeader extends manager{  public $myname = '商務部領導';  public $mystate = 0;}

ProductLeader.php:

<?phpclass ProductLeader extends manager{  public $myname = '商品部領導';  public $mystate = 1;}

LastLeader.php

<?phpclass LastLeader extends manager{  public $myname = '終極領導';  public $mystate = 2;}

在編輯提交文案之后,會進入『領導審批』階段:

if (isset($_GET['step'])){ //進入領導審批階段了  //這里面最關鍵是   //1.確定第一個領導是誰   //2. 要維護各個領導直接的關系,   require ('manager.php');   require ('BusinessLeader.php');   require ('ProductLeader.php');   require ('LastLeader.php');   $businessLeader = new BusinessLeader();   $productLeader = new ProductLeader();   $lastLeader = new LastLeader();   //下面還是維護關系   $businessLeader->setLeader($productLeader);   $productLeader->setLeader($lastLeader);   $businessLeader->step('審批通過');}

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


注:相關教程知識閱讀請移步到PHP教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
欧美一区在线直播| 久久精品国产久精国产一老狼| 国产精品美女主播| 欧美激情一区二区三区久久久| 亚洲成人激情在线观看| 国产欧美精品日韩| 亚洲精品久久在线| 日韩**中文字幕毛片| 欧美午夜精品久久久久久浪潮| 欧美福利视频在线| 日韩在线观看免费全集电视剧网站| 国产成人自拍视频在线观看| 亚洲天堂一区二区三区| 久久精品99无色码中文字幕| 日韩av免费观影| 亚洲欧美激情精品一区二区| 国产欧美日韩91| 中文字幕成人精品久久不卡| 亚洲一区二区免费在线| 精品免费在线观看| 亚洲午夜精品久久久久久久久久久久| 国产成人精品日本亚洲| 在线亚洲国产精品网| 国产精品视频地址| 超碰精品一区二区三区乱码| 亚洲欧美色图片| 国产欧美中文字幕| 在线国产精品播放| 青青草99啪国产免费| 久久久久成人网| 狠狠色狠狠色综合日日五| 青草青草久热精品视频在线网站| 日韩美女视频免费在线观看| 亚洲天堂av综合网| 色妞色视频一区二区三区四区| 日韩中文字幕网址| 久久精品视频在线观看| 欧美性极品xxxx做受| 另类专区欧美制服同性| 亚洲老板91色精品久久| 国产精品一区二区av影院萌芽| 亚洲精品之草原avav久久| 亚洲二区在线播放视频| 91国产视频在线播放| 亚洲视频在线视频| 在线日韩av观看| 久久九九精品99国产精品| 久久伊人精品视频| 久久久噜噜噜久久| 97色在线视频观看| 91精品国产综合久久香蕉的用户体验| 精品色蜜蜜精品视频在线观看| 午夜免费在线观看精品视频| 亚洲欧洲在线免费| 日韩有码片在线观看| 精品久久久久久久久国产字幕| 亚洲精品不卡在线| 国产精品久久色| 亚洲成人三级在线| 色av吧综合网| 亚洲女性裸体视频| 欧美精品性视频| 久久久噜噜噜久噜久久| 日韩欧亚中文在线| 亚洲欧美一区二区三区四区| 国产盗摄xxxx视频xxx69| 免费不卡在线观看av| 亚洲欧美一区二区激情| 亚洲成人黄色网| 51精品国产黑色丝袜高跟鞋| 国产日韩欧美在线| 一本色道久久综合亚洲精品小说| 欧美精品videosex牲欧美| 91精品国产自产在线观看永久| 亚洲片国产一区一级在线观看| 日韩精品高清视频| 精品少妇一区二区30p| 久久精品视频导航| 亚洲人成在线电影| 欧美高清在线视频观看不卡| 国产精品欧美久久久| 久久亚洲精品中文字幕冲田杏梨| 蜜臀久久99精品久久久久久宅男| 中文字幕精品一区二区精品| xvideos国产精品| 亚洲成色777777在线观看影院| 欧美激情在线一区| 国产精品扒开腿爽爽爽视频| 久久精品国产2020观看福利| 国产一区二区三区直播精品电影| 91免费的视频在线播放| 欧美人成在线视频| 国产精品三级在线| 中文字幕av一区中文字幕天堂| 欧美日韩国产限制| 亚洲激情国产精品| 国产精品久久久久久久久久小说| 久久精品国产99国产精品澳门| 97视频人免费观看| 在线观看91久久久久久| 91久久嫩草影院一区二区| 亚洲第一中文字幕| 欧美日韩成人在线观看| 欧美性猛交xxxx免费看久久久| 亚洲第一福利网| 韩国三级电影久久久久久| 日韩精品极品在线观看播放免费视频| 在线观看欧美视频| 亚洲综合精品伊人久久| 欧美日韩在线看| 日韩视频在线一区| 中文字幕在线观看日韩| 亚洲欧洲一区二区三区久久| 欧美日韩亚洲91| 日韩av快播网址| 国产精品一区二区久久国产| 色偷偷av一区二区三区| 欧美日韩一区二区三区| 久久久精品国产亚洲| 欧美激情中文字幕乱码免费| 最新69国产成人精品视频免费| 亚洲第一av网| 亚洲综合成人婷婷小说| 日韩av不卡在线| 国产成人高潮免费观看精品| 久久精品国产91精品亚洲| 亚洲乱码国产乱码精品精| 91亚洲国产成人久久精品网站| 日本一区二三区好的精华液| 国产精品美女www爽爽爽视频| 亚洲国产精品视频在线观看| 亚洲天堂第一页| 国产精品久久久久久久久久| 亚洲免费人成在线视频观看| 国产精品99久久久久久久久| 国产九九精品视频| 欧美黑人狂野猛交老妇| 91网站在线免费观看| 成人免费看片视频| 亚洲乱码av中文一区二区| 菠萝蜜影院一区二区免费| 欧美亚洲国产精品| 亚洲成人a**站| 日韩乱码在线视频| 一本色道久久综合狠狠躁篇怎么玩| 2019中文在线观看| 色综合久久88色综合天天看泰| 亚洲国产日韩一区| 国产成人在线一区二区| 亚洲影影院av| 北条麻妃一区二区在线观看| 色综合视频网站| 九九久久久久99精品| 午夜精品一区二区三区在线视| 亚洲性69xxxbbb| 欧美激情在线观看| 久久综合伊人77777| 久久成人综合视频| 亚洲综合在线中文字幕| 欧美性xxxxhd| 欧美寡妇偷汉性猛交| 欧美一区二区三区免费视| 亚洲精品久久久久久久久久久久| 亚洲欧美在线x视频|