Item::params()   A
last analyzed

Complexity

Conditions 1
Paths 1

Size

Total Lines 3
Code Lines 1

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
eloc 1
c 1
b 0
f 0
dl 0
loc 3
rs 10
cc 1
nc 1
nop 0
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 function array_unshift;
10
use function call_user_func_array;
11
12
/**
13
 * Class Item
14
 *
15
 * @package Tleckie\Router
16
 * @author  Teodoro Leckie Westberg <[email protected]>
17
 */
18
class Item
19
{
20
    /** @var Closure|callable */
21
    private $closure;
22
23
    /** @var array */
24
    private array $params;
25
26
    /** @var MiddlewareInterface[] */
27
    private array $middlewares;
28
29
    /**
30
     * Item constructor.
31
     *
32
     * @param Closure|callable $callable
33
     * @param array            $params
34
     * @param array            $middlewares
35
     */
36
    public function __construct(Closure|callable $callable, array $params, array $middlewares = [])
37
    {
38
        $this->closure = $callable;
39
        $this->params = $params;
40
        $this->middlewares = $middlewares;
41
    }
42
43
    /**
44
     * @return array
45
     */
46
    public function params(): array
47
    {
48
        return $this->params;
49
    }
50
51
    /**
52
     * @return Closure|callable
53
     */
54
    public function callable(): Closure|callable
55
    {
56
        return $this->closure;
57
    }
58
59
    public function middleware(): array
60
    {
61
        return $this->middlewares;
62
    }
63
64
    /**
65
     * @param ServerRequestInterface $request
66
     * @param ResponseInterface      $response
67
     * @return ResponseInterface
68
     */
69
    public function handle(ServerRequestInterface $request, ResponseInterface $response): ResponseInterface
70
    {
71
        $params = [$this->params];
72
73
        array_unshift($params, $request, $response);
74
75
        return call_user_func_array($this->closure, $params);
76
    }
77
}
78