ww/damascus

dev-master 2018-01-19 14:52 UTC

This package is not auto-updated.

Last update: 2024-09-20 22:58:34 UTC


README

这是一个简单的PHP中间件实现。就像大马士革钢一样,这是关于层次

安装

composer require ww/damascus

基本用法

1. 创建中间件

class IncFooMiddleware implements Damascus\MiddlewareInterface
{
    public function run(Damascus\DataBucketInterface $dataBucket, MiddlewareStep $next)
    {
        $dataBucket['foo'] += rand(0,12);
        
        if ($dataBucket['foo'] < 10) {
            $next->run($dataBucket);
        }
    }
}

class MailerMiddleware implements Damascus\MiddlewareInterface
{
    private $mailer;
    
    //I'm not coding the constructor of this
    
    public function run(Damascus\DataBucketInterface $dataBucket, MiddlewareStep $next)
    {
        $this->mailer->send($dataBucket['from'], $dataBucket['to'], $dataBucket['subject'], $dataBucket['body']);
    }
}

2. 将中间件推送到堆栈中

$middleware = ;
$stack = (new Damascus\MiddlewareStack())
    ->pushMiddleware(new IncFooMiddleware())
    ->pushMiddleware(new MailerMiddleware());

3. 开始伪造

$dataBucket = new Damascus\DataBucket([
    'from' => 'asdf@gmail.com',
    'to' => 'asdf@gmail.com',
    'subject' => 'threshold 10 not reached',
    'body' => 'threshold 10 not reached',
    'foo' => 0,
]);

$stack->run($dataBucket);

高级主题

  • 创建你需要的所有中间件。你可以使用DIC来重用它们,并添加依赖项。
  • 你还可以使用DIC来重用中间件堆栈。
  • 你可以创建你需要的自定义DataBucketInterface,并确保它在你的中间件中是正确的。

未来

我希望在不久的将来为这个项目创建一个Symfony包,允许使用DIC标签自动生成中间件堆栈。