RequestContextProvider::getContext()   A
last analyzed

Complexity

Conditions 6
Paths 7

Size

Total Lines 21
Code Lines 12

Duplication

Lines 0
Ratio 0 %

Importance

Changes 3
Bugs 0 Features 0
Metric Value
cc 6
eloc 12
c 3
b 0
f 0
nc 7
nop 0
dl 0
loc 21
rs 9.2222
1
<?php
2
3
namespace BeyondCode\DumpServer;
4
5
use Illuminate\Http\Request;
6
use Symfony\Component\VarDumper\Cloner\VarCloner;
7
use Symfony\Component\VarDumper\Dumper\ContextProvider\ContextProviderInterface;
8
9
class RequestContextProvider implements ContextProviderInterface
10
{
11
    /**
12
     * The current request.
13
     *
14
     * @var \Illuminate\Http\Request|null
15
     */
16
    private $currentRequest;
17
18
    /**
19
     * The variable cloner.
20
     *
21
     * @var \Symfony\Component\VarDumper\Cloner\VarCloner
22
     */
23
    private $cloner;
24
25
    /**
26
     * RequestContextProvider constructor.
27
     *
28
     * @param  \Illuminate\Http\Request|null  $currentRequest
29
     * @return void
30
     */
31
    public function __construct(Request $currentRequest = null)
32
    {
33
        $this->currentRequest = $currentRequest;
34
        $this->cloner = new VarCloner;
35
        $this->cloner->setMaxItems(0);
36
    }
37
38
    /**
39
     * Get the context.
40
     *
41
     * @return array|null
42
     */
43
    public function getContext(): ?array
44
    {
45
        if ($this->currentRequest === null) {
46
            return null;
47
        }
48
49
        $controller = null;
50
51
        if ($route = $this->currentRequest->route()) {
52
            $controller = $route->controller;
53
54
            if (! $controller && ! is_string($route->action['uses'])) {
55
                $controller = $route->action['uses'];
56
            }
57
        }
58
59
        return [
60
            'uri' => $this->currentRequest->getUri(),
61
            'method' => $this->currentRequest->getMethod(),
62
            'controller' => $controller ? $this->cloner->cloneVar(class_basename($controller)) : $this->cloner->cloneVar(null),
63
            'identifier' => spl_object_hash($this->currentRequest),
64
        ];
65
    }
66
}
67