MiddlewaresAwareTrait::addMiddleware()   A
last analyzed

Complexity

Conditions 1
Paths 1

Size

Total Lines 6
Code Lines 3

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 3
CRAP Score 1

Importance

Changes 0
Metric Value
dl 0
loc 6
ccs 3
cts 3
cp 1
rs 9.4285
c 0
b 0
f 0
cc 1
crap 1
eloc 3
nc 1
nop 1
1
<?php
2
3
namespace Thruster\Component\HttpMiddleware;
4
5
use Psr\Http\Message\ResponseInterface;
6
use Psr\Http\Message\ServerRequestInterface;
7
8
/**
9
 * Trait MiddlewaresAwareTrait
10
 *
11
 * @package Thruster\Component\HttpMiddleware
12
 * @author  Aurimas Niekis <[email protected]>
13
 */
14
trait MiddlewaresAwareTrait
15
{
16
    /**
17
     * @var Middlewares
18
     */
19
    protected $middlewares;
20
21
    /**
22
     * @return Middlewares
23
     */
24 2
    public function getMiddlewares()
25
    {
26 2
        if ($this->middlewares) {
27 2
            return $this->middlewares;
28
        }
29
30 1
        $this->middlewares = new Middlewares();
31
32 1
        return $this->middlewares;
33
    }
34
35
    /**
36
     * @param Middlewares $middlewares
37
     *
38
     * @return $this
39
     */
40 1
    public function setMiddlewares(Middlewares $middlewares)
41
    {
42 1
        $this->middlewares = $middlewares;
43
44 1
        return $this;
45
    }
46
47
    /**
48
     * @param callable $middleware
49
     *
50
     * @return $this
51
     */
52 2
    public function addMiddleware(callable $middleware)
53
    {
54 2
        $this->getMiddlewares()->add($middleware);
55
56 2
        return $this;
57
    }
58
59
    /**
60
     * @param ServerRequestInterface $request
61
     * @param ResponseInterface      $response
62
     * @param callable               $next
63
     *
64
     * @return ResponseInterface
65
     */
66 1
    public function executeMiddlewares(
67
        ServerRequestInterface $request,
68
        ResponseInterface $response,
69
        callable $next = null
70
    ) : ResponseInterface {
71 1
        return $this->getMiddlewares()->__invoke($request, $response, $next);
72
    }
73
}
74