重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
这篇文章主要介绍“PHP如何实现职责链设计模式”,在日常操作中,相信很多人在PHP如何实现职责链设计模式问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”PHP如何实现职责链设计模式”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!
成都创新互联公司专注于独山子网站建设服务及定制,我们拥有丰富的企业做网站经验。 热诚为您提供独山子营销型网站建设,独山子网站制作、独山子网页设计、独山子网站官网定制、成都小程序开发服务,打造独山子网络公司原创品牌,更为您提供独山子网站排名全网营销落地服务。
文件结构:
IndexController 为调用端,UserInfoEntity 用户实体用于存用户信息,flow 里面的为各种处理流程
IndexController
setName('zhangsan');
$startHandler->setNextHandler(new Reception())
->setNextHandler(new Clinic())
->setNextHandler(new Cashier())
->setNextHandler(new Pharmacy());
$startHandler->execute($userInfo);
}
}
UserInfoEntity
name;
}
public function setName(string $name): UserInfoEntity
{
$this->name = $name;
return $this;
}
public function isRegistrationDone(): bool
{
return $this->registrationDone;
}
public function setRegistrationDone(bool $registrationDone): UserInfoEntity
{
$this->registrationDone = $registrationDone;
return $this;
}
public function isDoctorCheckUpDone(): bool
{
return $this->doctorCheckUpDone;
}
public function setDoctorCheckUpDone(bool $doctorCheckUpDone): UserInfoEntity
{
$this->doctorCheckUpDone = $doctorCheckUpDone;
return $this;
}
public function isMedicineDone(): bool
{
return $this->medicineDone;
}
public function setMedicineDone(bool $medicineDone): UserInfoEntity
{
$this->medicineDone = $medicineDone;
return $this;
}
public function isPaymentDone(): bool
{
return $this->paymentDone;
}
public function setPaymentDone(bool $paymentDone): UserInfoEntity
{
$this->paymentDone = $paymentDone;
return $this;
}
}
HandlerInterface
AbstractHandler
nextHandler = $handler;
return $this->nextHandler;
}
public function execute(UserInfoEntity $info)
{
if (! empty($this->nextHandler)) {
try {
$this->nextHandler->do($info);
} catch (\Exception $e) {
return;
}
return $this->nextHandler->execute($info);
}
}
public function do(UserInfoEntity $info)
{
// TODO: Implement do() method.
}
}
StartHandler
Cashier
setPaymentDone(true);
}
}
Clinic
setDoctorCheckUpDone(true);
}
}
Pharmacy
setMedicineDone(true);
}
}
Reception
setRegistrationDone(true);
}
}
写一个单元测试跑一下 indexController 的 index 方法,结果如下:
到此,关于“PHP如何实现职责链设计模式”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注创新互联网站,小编会继续努力为大家带来更多实用的文章!