简洁高效的 PHP 中间件管道 - Pipeline
<?php
class Pipeline {
private $passable;
private $pipes = [];
private $exceptions = [];
public function __construct($passable) {
$this->passable = $passable;
}
public function through($pipes) {
$this->pipes = $pipes;
return $this;
}
public function then(Closure $destination) {
foreach ($this->pipes as $pipe) {
$this->passable = $this->sendThroughPipeline($pipe, $this->passable);
}
return $destination($this->passable);
}
private function sendThroughPipeline($pipe, $passable) {
return $pipe($passable);
}
}
// 使用示例
$pipeline = (new Pipeline(new stdClass))
->through([
function ($payload) {
// 处理请求
return $payload;
},
function ($payload) {
// 更多处理
return $payload;
}
])
->then(function ($payload) {
// 最终处理
return $payload;
});
这个示例代码展示了如何实现一个简洁而高效的 PHP 中间件管道。通过定义一个 Pipeline
类,并在其中实现了 through
方法来添加中间件,以及 then
方法来执行最终的处理。这种模式可以用于构建一个处理请求的链式操作,每个中间件都可以对请求进行处理,然后将其传递给下一个中间件,直至最终处理。
评论已关闭