Completed
Push — master ( a678c2...6277d2 )
by
unknown
21s queued 14s
created

compose()   A

Complexity

Conditions 2
Paths 2

Size

Total Lines 9
Code Lines 5

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 2
eloc 5
nc 2
nop 2
dl 0
loc 9
rs 10
c 0
b 0
f 0
1
<?php
2
namespace Qiniu\Http\Middleware;
3
4
use Qiniu\Http\Request;
5
use Qiniu\Http\Response;
6
7
interface Middleware
8
{
9
    /**
10
     * @param Request $request
11
     * @param callable(Request): Response $next
12
     * @return Response
13
     */
14
    public function send($request, $next);
15
}
16
17
/**
18
 * @param array<Middleware> $middlewares
19
 * @param callable(Request): Response $handler
20
 * @return callable(Request): Response
21
 */
22
function compose($middlewares, $handler)
23
{
24
    $next = $handler;
25
    foreach (array_reverse($middlewares) as $middleware) {
26
        $next = function ($request) use ($middleware, $next) {
27
            return $middleware->send($request, $next);
28
        };
29
    }
30
    return $next;
31
}
32