ww / damascus
中间件库
dev-master
2018-01-19 14:52 UTC
Requires (Dev)
- phpspec/phpspec: ^3.2
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标签自动生成中间件堆栈。