Issues (105)

src/Middleware/RouteResolverMiddleware.php (1 issue)

Labels
Severity
1
<?php
2
declare(strict_types=1);
3
4
namespace Nip\Router\Middleware;
5
6
use Nip\Http\ServerMiddleware\Middlewares\ServerMiddlewareInterface;
7
use Nip\Request;
8
use Nip\Router\RequestContext;
9
use Nip\Router\Router;
10
use Psr\Http\Message\ResponseInterface;
11
use Psr\Http\Message\ServerRequestInterface;
12
use Psr\Http\Server\RequestHandlerInterface;
13
14
/**
15
 * Class StartSession
16
 * @package Nip\Session\Middleware
17
 */
18
class RouteResolverMiddleware implements ServerMiddlewareInterface
19
{
20
21
    /**
22
     * The session manager.
23
     *
24
     * @var Router
25
     */
26
    protected $router;
27
28
    /**
29
     * Create a new session middleware.
30
     *
31
     * @param Router $router
32 1
     */
33
    public function __construct(Router $router)
34 1
    {
35 1
        $this->router = $router;
36
    }
37
38
    /**
39
     * @inheritdoc
40
     * @param Request $request
41 1
     */
42
    public function process(ServerRequestInterface $request, RequestHandlerInterface $handler): ResponseInterface
43 1
    {
44 1
        $this->getRouter()->setContext((new RequestContext())->fromRequest($request));
0 ignored issues
show
$request of type Psr\Http\Message\ServerRequestInterface is incompatible with the type Symfony\Component\HttpFoundation\Request expected by parameter $request of Nip\Router\RequestContext::fromRequest(). ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-type  annotation

44
        $this->getRouter()->setContext((new RequestContext())->fromRequest(/** @scrutinizer ignore-type */ $request));
Loading history...
45 1
        $return = $this->getRouter()->matchRequest($request);
46
        if (is_array($return) && isset($return['_route'])) {
47
            $this->populateRequest($request, $return);
48
        }
49 1
50
        return $handler->handle($request);
51
    }
52
53
    /**
54
     * @param Request $request
55
     * @param $params
56
     */
57
    protected function populateRequest($request, $params)
58
    {
59
        foreach ($params as $param => $value) {
60
            switch ($param) {
61
                case 'module':
62
                    $request->setModuleName($value);
63
                    break;
64
                case 'controller':
65
                    $request->setControllerName($value);
66
                    break;
67
                case 'action':
68
                    $request->setActionName($value);
69
                    break;
70
                default:
71
                    $request->attributes->set($param, $value);
72
                    break;
73
            }
74
        }
75
    }
76
77
    /**
78
     * @return Router
79 1
     */
80
    public function getRouter(): Router
81 1
    {
82
        return $this->router;
83
    }
84
}
85