naucon/processor

此包提供了一种通用的处理器链,用于使用处理器/任务处理给定的对象(类似于管道,命令链模式)。

1.0.0 2017-05-25 10:06 UTC

This package is auto-updated.

Last update: 2024-08-29 04:20:02 UTC


README

关于

此包提供了一种通用的处理器链,用于使用处理器/任务处理给定的对象(类似于管道,命令链模式)。目标是把大量的处理代码拆分成多个较小的任务,这些任务松散耦合,更易于阅读、维护和替换。

功能

  • 通过处理器/任务处理对象
  • 使用 ProcessorChain 进行链式处理
  • 链中的处理器/任务可以设置优先级
  • 处理器/任务可以限制到特定的类或接口(支持AwareInterface)

兼容性

  • PHP5.5

安装

通过 composer 安装最新版本

composer require naucon/processor

使用方法

创建 ProcessorChain 实例

$chain = new ProcessorChain();

将处理器/任务注册到链中

$chain->addProcessor(new AddValue(Foo::class, 15));
$chain->addProcessor(new AddValue(Bar::class, 5));
$chain->addProcessor(new SubstractValue(Foo::class, 5));

处理对象

$model = new Foo();

if ($chain->process($model)) {
    echo $fooModel->getValue(); // 0 + 15 - 5 = 10
}

创建一个处理器

use Naucon\Processor\ProcessorInterface;

class MyProcessor implements ProcessorInterface
{
    /**
     * @inheritdoc
     */
    public function process($model)
    {
        // processing the model ...


        // return false;  // terminates processor chain
        // or
        return true; // continue with next processor in chain
    }
}

如果 process() 方法返回 true,则处理器链将继续执行链中的下一个处理器。如果返回 false,则处理器链将终止。

添加一个 SupportAwareInterface

use SupportAwareInterface

class MyProcessor implements ProcessorInterface, SupportAwareInterface
{
    /**
     * @inheritdoc
     */
    public function process($model)
    {
        ...
    }

    /**
     * @inheritdoc
     */
    public function support($model)
    {
        return $model instanceof FooInterface;
    }
}

或者你可以使用 AbstractProcessor

use Naucon\Processor\AbstractProcessor;

class MyProcessor extends AbstractProcessor
{
    /**
     * Constructor
     *
     * @param   string      $modelClass      model class name
     */
    public function __construct($modelClass, $value)
    {
        parent::__construct($modelClass);
    }

    /**
     * @inheritdoc
     */
    public function process($model)
    {
        ...
    }
}

示例

执行

cd examples
php ProcessorExample.php

输出

FOO: 10
BAR: 10

许可证

MIT 许可证 (MIT)

版权所有 (c) 2015 Sven Sanzenbacher

特此授予任何人获取此软件及其相关文档副本(“软件”)的权利,免费使用软件,包括但不限于使用、复制、修改、合并、发布、分发、再许可和/或出售软件副本,并允许提供软件的人士为此目的而使用软件,前提是遵守以下条件

上述版权声明和本许可声明应包含在软件的所有副本或主要部分中。

软件按“原样”提供,不提供任何形式的保证,明示或暗示,包括但不限于适销性、特定用途适用性和非侵权性保证。在任何情况下,作者或版权所有者均不对任何索赔、损害或其他责任负责,无论是在合同行为、侵权行为或其他行为中,无论是在软件或其使用或其它交易中产生的。