FacadeMethodExtension::subject()   A
last analyzed

Complexity

Conditions 1
Paths 1

Size

Total Lines 3

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 0
CRAP Score 2

Importance

Changes 0
Metric Value
dl 0
loc 3
ccs 0
cts 2
cp 0
rs 10
c 0
b 0
f 0
cc 1
nc 1
nop 0
crap 2
1
<?php
2
3
declare(strict_types=1);
4
5
/**
6
 * This file is part of Laravel Code Analyse.
7
 *
8
 * (c) Nuno Maduro <[email protected]>
9
 *
10
 *  For the full copyright and license information, please view the LICENSE
11
 *  file that was distributed with this source code.
12
 */
13
14
namespace NunoMaduro\LaravelCodeAnalyse\Support\Facades;
15
16
use function get_class;
17
use InvalidArgumentException;
18
use Illuminate\Support\Manager;
19
use Illuminate\Support\Facades\Facade;
20
use PHPStan\Reflection\ClassReflection;
21
use NunoMaduro\LaravelCodeAnalyse\AbstractExtension;
22
23
/**
24
 * @internal
25
 */
26
final class FacadeMethodExtension extends AbstractExtension
27
{
28
    /**
29
     * {@inheritdoc}
30
     */
31
    protected $staticAccess = true;
32
33
    /**
34
     * {@inheritdoc}
35
     */
36
    protected function subject(): string
37
    {
38
        return Facade::class;
39
    }
40
41
    /**
42
     * {@inheritdoc}
43
     */
44
    protected function searchIn(ClassReflection $classReflection): array
45
    {
46
        $facadeClass = $classReflection->getName();
47
48
        if ($concrete = $facadeClass::getFacadeRoot()) {
49
            $classes = [get_class($concrete)];
50
51
            if ($concrete instanceof Manager) {
52
                $driver = null;
0 ignored issues
show
Unused Code introduced by
The assignment to $driver is dead and can be removed.
Loading history...
53
54
                try {
55
                    $driver = $concrete->driver();
56
                } catch (InvalidArgumentException $exception) {
57
                    // ..
58
                }
59
60
                if ($driver !== null) {
61
                    $classes[] = get_class($driver);
62
                }
63
            }
64
65
            return $classes;
66
        }
67
68
        return [NullConcreteClass::class];
69
    }
70
}
71