show.php:
content = '文案的内容'; $subject->save(); } } ?>责任链-审批 流程演示界面
编辑点击『创建文案』提交内容,然后把文案写到到本地json文件(保存)。文案的主题是subject.php:
这个时候文案已经创建好了,需要进入审批
抽象类(领导)manager.php :
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
ProductLeader.php:
LastLeader.php
在编辑提交文案之后,会进入『领导审批』阶段:
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('审批通过'); }