yarimadam / phpcor
使用PHP编写的简单责任链实现。
0.1.1
2019-01-29 09:00 UTC
Requires
- php: >7
Requires (Dev)
- phpunit/phpunit: ^7.4
- squizlabs/php_codesniffer: ^3.3
This package is auto-updated.
Last update: 2024-09-05 02:43:44 UTC
README
描述
Yarimadam/COR包是用PHP编写的简单责任链实现。它允许你为你的主题的每个上下文定义处理器,并通过降低应用程序中的循环复杂度( cyclomatic/npath)来帮助你更好地模块化条件。
安装
如果你疯狂到不用composer,只需下载/克隆它。
否则,使用composer安装。
composer require yarimadam/phpcor
快速开始
定义处理器
通过扩展\Yarimadam\COR\AbstractHandler
超类为你的主题的每个上下文创建相应的处理器。
处理器示例
当传入的主题是“字符串”类型时执行。
class StringHandler extends AbstractHandler { protected function isResponsible($subject): bool { return is_string($subject); } protected function process($subject): void { // echo the output echo 'We have a string here!'; } }
当传入的主题是“数组”类型时执行。
class ArrayHandler extends AbstractHandler { protected function isResponsible($subject): bool { return is_array($subject); } protected function process($subject): void { $output = []; foreach($subject as $item) { $output[] = $item; } // don't echo, set as handler output instead $this->chain->setResponsibleHandlerOutput($output); } }
定义流程
$cor = new ChainOfResponsibility(); $cor->registerHandler(new StringHandler()); $cor->registerHandler(new ArrayHandler()); $subject = 'Hi there, i\'m a string!'; $cor->processThroughChain($subject);
获取结果
// fully qualified class name $cor->getResponsibleHandler(); // output from the handler - if any $cor->getResponsibleHandlerOutput();