GitHub Access Token became invalid

It seems like the GitHub access token used for retrieving details about this repository from GitHub became invalid. This might prevent certain types of inspections from being run (in particular, everything related to pull requests).
Please ask an admin of your repository to re-new the access token on this website.

IocBinder   B
last analyzed

Complexity

Total Complexity 4

Size/Duplication

Total Lines 120
Duplicated Lines 0 %

Coupling/Cohesion

Components 0
Dependencies 18

Importance

Changes 0
Metric Value
dl 0
loc 120
rs 7.3333
c 0
b 0
f 0
wmc 4
lcom 0
cbo 18

4 Methods

Rating   Name   Duplication   Size   Complexity  
A __construct() 0 4 1
B preBind() 0 37 1
A postBind() 0 52 1
A bootstrap() 0 4 1
1
<?php
2
3
namespace Inspector\Application;
4
5
use PhpParser\Lexer;
6
use PhpParser\Parser;
7
use Inspector\Analysis\Analyzer;
8
use Inspector\Analysis\FlawDetector;
9
use Inspector\Filesystem\CodeScanner;
10
use Illuminate\Filesystem\Filesystem;
11
use Inspector\Foundation\MessageProvider;
12
use Inspector\Analysis\Complexity\CCNChecker;
13
use Symfony\Component\Console\Input\ArgvInput;
14
use Inspector\Analysis\Report\ReportGenerator;
15
use Inspector\Application\Service\ReportService;
16
use Inspector\Application\Commands\InspectCommand;
17
use Inspector\Analysis\Exception\AnalysisException;
18
use Inspector\Analysis\Feedback\FeedbackInterface;
19
use Inspector\Application\Service\AnalyzerService;
20
use Symfony\Component\Console\Output\ConsoleOutput;
21
use Inspector\Analysis\Complexity\ComplexityComputer;
22
use Inspector\Analysis\Feedback\ConsolePlainFeedback;
23
24
/**
25
 * TODO: Remove this class and instead introduce laravel style Service Providers
26
 *
27
 * @author Kabir Baidhya
28
 */
29
class IocBinder
30
{
31
32
    /**
33
     * @param ServiceContainer $container
34
     */
35
    public function __construct(ServiceContainer $container)
36
    {
37
        $this->container = $container;
0 ignored issues
show
Bug introduced by
The property container does not exist. Did you maybe forget to declare it?

In PHP it is possible to write to properties without declaring them. For example, the following is perfectly valid PHP code:

class MyClass { }

$x = new MyClass();
$x->foo = true;

Generally, it is a good practice to explictly declare properties to avoid accidental typos and provide IDE auto-completion:

class MyClass {
    public $foo;
}

$x = new MyClass();
$x->foo = true;
Loading history...
38
    }
39
40
    /**
41
     * Initialize bindings when the application is initialized
42
     */
43
    public function preBind()
44
    {
45
        $this->container->bind('filesystem', function () {
46
            return new Filesystem();
47
        });
48
49
        $this->container->bind('input', function () {
50
            return new ArgvInput();
51
        });
52
53
        $this->container->bind('output', function () {
54
            return new ConsoleOutput();
55
        });
56
57
        $this->container->bind('code-scanner', function ($container) {
58
            return new CodeScanner($container['filesystem']);
59
        });
60
61
        $this->container->bind('lexer', function () {
62
            return new Lexer();
63
        });
64
65
        $this->container->bind('parser', function ($container) {
66
            return new Parser($container['lexer']);
67
        });
68
69
        $this->container->bind('bootstrapper', function ($container) {
70
            return new Bootstrapper($container);
71
        });
72
73
        $this->container->bind('complexity-computer', function () {
74
75
            // Complexity Computer based upon Cyclomatic Complexity Number
76
            return new ComplexityComputer(new CCNChecker());
77
        });
78
79
    }
80
81
    /**
82
     * Initialize bindings after the application is initialized and config is loaded
83
     *
84
     * @param array $configuration
85
     */
86
    public function postBind(array $configuration)
87
    {
88
        $this->container->instance('config', $configuration);
89
90
        // Setup AnalysisException ComplexityComputing
91
        AnalysisException::setComplexityComputer($this->container['complexity-computer']);
92
93
        $this->container->bind('message-provider', function ($container) {
94
            return new MessageProvider($container['config']);
95
        });
96
97
        $this->container->bind('flaw-detector', function ($container) {
98
            return new FlawDetector($container['bootstrapper'], $container['config']);
99
        });
100
101
        $this->container->bind('analyzer', function ($container) {
102
            return $this->bootstrap(
103
                new Analyzer(
104
                    $container['parser'],
105
                    $container['flaw-detector']
106
                )
107
            );
108
        });
109
110
        $this->container->bind(FeedbackInterface::class, function ($container) {
111
            return new ConsolePlainFeedback($container['config'], $container['output']);
112
        });
113
114
        $this->container->bind('report-generator', function ($container) {
115
            return new ReportGenerator($container['filesystem']);
116
        });
117
118
        $this->container->bind('report-service', function ($container) {
119
            return new ReportService($container['report-generator']);
120
        });
121
122
        $this->container->bind('analyzer-service', function ($container) {
123
            return new AnalyzerService(
124
                $container['analyzer'],
125
                $container['code-scanner'],
126
                $container[FeedbackInterface::class],
127
                $container['report-service']
128
            );
129
        });
130
131
        $this->container->bind(InspectCommand::class, function ($container) {
132
            return new InspectCommand(
133
                $container['analyzer-service']
134
            );
135
        });
136
137
    }
138
139
    /**
140
     * @param $object
141
     * @return mixed
142
     */
143
    public function bootstrap($object)
144
    {
145
        return $this->container['bootstrapper']->bootstrap($object);
146
    }
147
148
}
149