Caller::__construct()   A
last analyzed

Complexity

Conditions 1
Paths 1

Size

Total Lines 5
Code Lines 3

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 4
CRAP Score 1

Importance

Changes 0
Metric Value
cc 1
eloc 3
nc 1
nop 3
dl 0
loc 5
ccs 4
cts 4
cp 1
crap 1
rs 9.4285
c 0
b 0
f 0
1
<?php
2
3
namespace SideDevOrg\MiniPhpFw;
4
5
use Psr\Http\Message\ResponseInterface as Response;
6
use Psr\Http\Message\RequestInterface as Request;
7
8
/**
9
 * Framework Caller middleware.
10
 */
11
class Caller
12
{
13
    /**
14
     * Class name.
15
     *
16
     * @var string
17
     */
18
    private $class;
19
20
    /**
21
     * Method name.
22
     *
23
     * @var string
24
     */
25
    private $method;
26
27
    /**
28
     * Method param array.
29
     *
30
     * @var array
31
     */
32
    private $vars;
33
34
    /**
35
     * Caller middleware construct.
36
     */
37 4
    public function __construct(string $class, string $method, array $vars)
38
    {
39 4
        $this->class = $class;
40 4
        $this->method = $method;
41 4
        $this->vars = $vars;
42 4
    }
43
44
    /**
45
     * Invoke middleware.
46
     *
47
     * @param \Psr\Http\Message\RequestInterface  $request
48
     * @param \Psr\Http\Message\ResponseInterface $response
49
     * @param callable                            $next
50
     *
51
     * @return \Psr\Http\Message\ResponseInterface
52
     */
53 4
    public function __invoke(Request $request, Response $response, callable $next) : \Psr\Http\Message\ResponseInterface
54
    {
55 4
        $class = new $this->class();
56 4
        $class->setRequest($request);
57
58 4
        $response->getBody()->write(
59 4
            call_user_func_array([$class, $this->method], $this->vars)
60
        );
61
62 4
        return $next($request, $response);
63
    }
64
}
65