MiddlewareHandler::__invoke()   A
last analyzed

Complexity

Conditions 1
Paths 1

Size

Total Lines 7
Code Lines 5

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
dl 0
loc 7
rs 9.4285
c 0
b 0
f 0
cc 1
eloc 5
nc 1
nop 1
1
<?php
2
/**
3
 * Phossa Project
4
 *
5
 * PHP version 5.4
6
 *
7
 * @category  Library
8
 * @package   Phossa2\Route
9
 * @copyright Copyright (c) 2016 phossa.com
10
 * @license   http://mit-license.org/ MIT License
11
 * @link      http://www.phossa.com/
12
 */
13
/*# declare(strict_types=1); */
14
15
namespace Phossa2\Route\Handler;
16
17
use Psr\Http\Message\RequestInterface;
18
use Psr\Http\Message\ResponseInterface;
19
use Phossa2\Shared\Base\ObjectAbstract;
20
use Phossa2\Route\Interfaces\ResultInterface;
21
use Phossa2\Route\Interfaces\HandlerInterface;
22
23
/**
24
 * MiddlewareHandler
25
 *
26
 * Handler result with middlewares
27
 *
28
 * @package Phossa2\Route
29
 * @author  Hong Zhang <[email protected]>
30
 * @see     ObjectAbstract
31
 * @see     HandlerInterface
32
 * @see     RequestInterface
33
 * @see     ResponseInterface
34
 * @version 2.0.1
35
 * @since   2.0.1 added
36
 */
37
class MiddlewareHandler extends ObjectAbstract implements HandlerInterface
38
{
39
    /**
40
     * @var    mixed
41
     * @access protected
42
     */
43
    protected $middleware;
44
45
    /**
46
     * @param  mixed $middleware middleware or middleware queue
47
     * @access public
48
     */
49
    public function __construct($middleware)
50
    {
51
        $this->middleware = $middleware;
52
    }
53
54
    /**
55
     * Handles the result with middleware
56
     *
57
     * @param  ResultInterface $result
58
     * @access public
59
     * @api
60
     */
61
    public function __invoke(ResultInterface $result)
62
    {
63
        $middleware = $this->middleware;
64
        $params = $result->getParameters();
65
        $response = $middleware($params['request'], $params['response']);
66
        $result->setParameters(['response' => $response]);
67
    }
68
}
69