naucon / processor
此包提供了一种通用的处理器链,用于使用处理器/任务处理给定的对象(类似于管道,命令链模式)。
1.0.0
2017-05-25 10:06 UTC
Requires
- php: >=5.5.0
- naucon/utility: ^1.0
Requires (Dev)
- phpunit/phpunit: 4.8.*
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
特此授予任何人获取此软件及其相关文档副本(“软件”)的权利,免费使用软件,包括但不限于使用、复制、修改、合并、发布、分发、再许可和/或出售软件副本,并允许提供软件的人士为此目的而使用软件,前提是遵守以下条件
上述版权声明和本许可声明应包含在软件的所有副本或主要部分中。
软件按“原样”提供,不提供任何形式的保证,明示或暗示,包括但不限于适销性、特定用途适用性和非侵权性保证。在任何情况下,作者或版权所有者均不对任何索赔、损害或其他责任负责,无论是在合同行为、侵权行为或其他行为中,无论是在软件或其使用或其它交易中产生的。