MiddlewareFactory   A
last analyzed

Complexity

Total Complexity 3

Size/Duplication

Total Lines 36
Duplicated Lines 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
wmc 3
eloc 6
c 1
b 0
f 0
dl 0
loc 36
rs 10

4 Methods

Rating   Name   Duplication   Size   Complexity  
create() 0 29 ?
A hp$0 ➔ create() 0 29 1
A hp$0 ➔ process() 0 3 1
A hp$0 ➔ __construct() 0 4 1
1
<?php
2
3
namespace Tleckie\Router;
4
5
use Closure;
6
use Psr\Http\Message\ResponseInterface;
7
use Psr\Http\Message\ServerRequestInterface;
8
use Psr\Http\Server\MiddlewareInterface;
9
use Psr\Http\Server\RequestHandlerInterface;
10
use function call_user_func;
11
12
/**
13
 * Class MiddlewareFactory
14
 *
15
 * @package Tleckie\Router
16
 * @author  Teodoro Leckie Westberg <[email protected]>
17
 */
18
class MiddlewareFactory
19
{
20
    /**
21
     * @param callable|Closure $callable
22
     * @param array            $params
23
     * @return MiddlewareInterface
24
     */
25
    public function create(callable|Closure $callable, array $params = []): MiddlewareInterface
26
    {
27
        return new class($callable, $params) implements MiddlewareInterface {
28
            /** @var callable */
29
            private $callable;
30
31
            /** @var array */
32
            private array $params;
33
34
            /**
35
             *  constructor.
36
             *
37
             * @param callable $callable
38
             * @param array    $params
39
             */
40
            public function __construct(callable $callable, array $params)
41
            {
42
                $this->callable = $callable;
43
                $this->params = $params;
44
            }
45
46
            /**
47
             * @param ServerRequestInterface  $request
48
             * @param RequestHandlerInterface $handler
49
             * @return ResponseInterface
50
             */
51
            public function process(ServerRequestInterface $request, RequestHandlerInterface $handler): ResponseInterface
52
            {
53
                return call_user_func($this->callable, $request, $handler, $this->params);
54
            }
55
        };
56
    }
57
}
58