yarimadam/phpcor

使用PHP编写的简单责任链实现。

0.1.1 2019-01-29 09:00 UTC

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();