yaroslawww/php-pipe-passage

使用管道实现的替代实现 '责任链' 模式。

1.0.0 2021-11-08 08:26 UTC

This package is auto-updated.

Last update: 2024-09-26 16:42:01 UTC


README

Packagist License Packagist Version Total Downloads Build Status Code Coverage Scrutinizer Code Quality

安装

使用 composer 安装包

composer require yaroslawww/php-pipe-passage

用法

 $pipe = Pipe::make([
    function ($entity, \Closure $next) {
        $entity->test = 'test value';

        return $next($entity);
    },
    function ($entity, \Closure $next) {
        $entity->test2 = 'second test value';

        return $next($entity);
    },
])
            ->next(SetNameHandler::class)
            ->next(new SetCompanyHandler('web company'))
            ->next(function ($entity, \Closure $next) {
                $entity->test3 = 'third test value';

                return $next($entity);
            });

$entityObject = $pipe->pass(new \stdClass());

$this->assertEquals('test value', $entityObject->test);
$this->assertEquals('second test value', $entityObject->test2);
$this->assertEquals('third test value', $entityObject->test3);
$this->assertEquals('default', $entityObject->name);
$this->assertEquals('web company', $entityObject->company);

处理器示例

class ExamplePipeSection implements PipeSection {
    
    public function handle($entity, \Closure $next)
    {
        // There will be some functionality

        return $next($entity);
    }
    
}

致谢

  • Think Studio