Passed
Pull Request — master (#1882)
by Janko
28:33
created

Init::getContainer()   B

Complexity

Conditions 2
Paths 2

Size

Total Lines 62
Code Lines 56

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 57
CRAP Score 2

Importance

Changes 0
Metric Value
cc 2
eloc 56
nc 2
nop 0
dl 0
loc 62
ccs 57
cts 57
cp 1
crap 2
rs 8.9599
c 0
b 0
f 0

How to fix   Long Method   

Long Method

Small methods make your code easier to understand, in particular if combined with a good name. Besides, if your method is small, finding a good name is usually much easier.

For example, if you find yourself adding comments to a method's body, this is usually a good sign to extract the commented part to a new method, and use the comment as a starting point when coming up with a good name for this new method.

Commonly applied refactorings include:

1
<?php
2
3
declare(strict_types=1);
4
5
namespace Stu\Config;
6
7
use DI\ContainerBuilder;
8
use Psr\Container\ContainerInterface;
9
use Stu\Module\Config\StuConfigInterface;
10
use Stu\Module\Twig\TwigHelper;
11
12
/**
13
 * Inits the application by calling the provided callable and injecting the DIC
14
 */
15
final class Init
16
{
17
    private static ?ContainerInterface $CONTAINER = null;
18
19 4
    public static function getContainer(): ContainerInterface
20
    {
21 4
        if (static::$CONTAINER === null) {
0 ignored issues
show
Bug introduced by
Since $CONTAINER is declared private, accessing it with static will lead to errors in possible sub-classes; you can either use self, or increase the visibility of $CONTAINER to at least protected.
Loading history...
22
            // ordered alphabetically
23 4
            $builder = new ContainerBuilder();
24 4
            $builder->addDefinitions(__DIR__ . '/services.php');
25 4
            $builder->addDefinitions(__DIR__ . '/../Component/Admin/services.php');
26 4
            $builder->addDefinitions(__DIR__ . '/../Component/Alliance/services.php');
27 4
            $builder->addDefinitions(__DIR__ . '/../Component/Anomaly/services.php');
28 4
            $builder->addDefinitions(__DIR__ . '/../Component/Building/services.php');
29 4
            $builder->addDefinitions(__DIR__ . '/../Component/Cli/services.php');
30 4
            $builder->addDefinitions(__DIR__ . '/../Component/Colony/services.php');
31 4
            $builder->addDefinitions(__DIR__ . '/../Component/Communication/services.php');
32 4
            $builder->addDefinitions(__DIR__ . '/../Component/Crew/services.php');
33 4
            $builder->addDefinitions(__DIR__ . '/../Component/Game/services.php');
34 4
            $builder->addDefinitions(__DIR__ . '/../Component/GrapViz/services.php');
35 4
            $builder->addDefinitions(__DIR__ . '/../Component/History/services.php');
36 4
            $builder->addDefinitions(__DIR__ . '/../Component/Image/services.php');
37 4
            $builder->addDefinitions(__DIR__ . '/../Component/Index/services.php');
38 4
            $builder->addDefinitions(__DIR__ . '/../Component/Logging/services.php');
39 4
            $builder->addDefinitions(__DIR__ . '/../Component/Map/services.php');
40 4
            $builder->addDefinitions(__DIR__ . '/../Component/Player/services.php');
41 4
            $builder->addDefinitions(__DIR__ . '/../Component/Ship/services.php');
42 4
            $builder->addDefinitions(__DIR__ . '/../Component/Station/services.php');
43 4
            $builder->addDefinitions(__DIR__ . '/../Component/StarSystem/services.php');
44 4
            $builder->addDefinitions(__DIR__ . '/../Lib/services.php');
45 4
            $builder->addDefinitions(__DIR__ . '/../Module/Admin/services.php');
46 4
            $builder->addDefinitions(__DIR__ . '/../Module/Alliance/services.php');
47 4
            $builder->addDefinitions(__DIR__ . '/../Module/Award/services.php');
48 4
            $builder->addDefinitions(__DIR__ . '/../Module/Building/services.php');
49 4
            $builder->addDefinitions(__DIR__ . '/../Module/Colony/services.php');
50 4
            $builder->addDefinitions(__DIR__ . '/../Module/Commodity/services.php');
51 4
            $builder->addDefinitions(__DIR__ . '/../Module/Communication/services.php');
52 4
            $builder->addDefinitions(__DIR__ . '/../Module/Control/services.php');
53 4
            $builder->addDefinitions(__DIR__ . '/../Module/Crew/services.php');
54 4
            $builder->addDefinitions(__DIR__ . '/../Module/Database/services.php');
55 4
            $builder->addDefinitions(__DIR__ . '/../Module/Game/services.php');
56 4
            $builder->addDefinitions(__DIR__ . '/../Module/History/services.php');
57 4
            $builder->addDefinitions(__DIR__ . '/../Module/Index/services.php');
58 4
            $builder->addDefinitions(__DIR__ . '/../Module/Logging/services.php');
59 4
            $builder->addDefinitions(__DIR__ . '/../Module/Maindesk/services.php');
60 4
            $builder->addDefinitions(__DIR__ . '/../Module/Maintenance/services.php');
61 4
            $builder->addDefinitions(__DIR__ . '/../Module/Message/services.php');
62 4
            $builder->addDefinitions(__DIR__ . '/../Module/Notes/services.php');
63 4
            $builder->addDefinitions(__DIR__ . '/../Module/NPC/services.php');
64 4
            $builder->addDefinitions(__DIR__ . '/../Module/PlayerProfile/services.php');
65 4
            $builder->addDefinitions(__DIR__ . '/../Module/PlayerSetting/services.php');
66 4
            $builder->addDefinitions(__DIR__ . '/../Module/Prestige/services.php');
67 4
            $builder->addDefinitions(__DIR__ . '/../Module/Research/services.php');
68 4
            $builder->addDefinitions(__DIR__ . '/../Module/Ship/services.php');
69 4
            $builder->addDefinitions(__DIR__ . '/../Module/Starmap/services.php');
70 4
            $builder->addDefinitions(__DIR__ . '/../Module/Station/services.php');
71 4
            $builder->addDefinitions(__DIR__ . '/../Module/Template/services.php');
72 4
            $builder->addDefinitions(__DIR__ . '/../Module/Tick/services.php');
73 4
            $builder->addDefinitions(__DIR__ . '/../Module/Trade/services.php');
74 4
            $builder->addDefinitions(__DIR__ . '/../Module/Twig/services.php');
75 4
            $builder->addDefinitions(__DIR__ . '/../Orm/Repository/services.php');
76
77 4
            static::$CONTAINER = $builder->build();
78
        }
79
80 4
        return static::$CONTAINER;
0 ignored issues
show
Bug Best Practice introduced by
The expression return static::CONTAINER could return the type null which is incompatible with the type-hinted return Psr\Container\ContainerInterface. Consider adding an additional type-check to rule them out.
Loading history...
81
    }
82
83
    /**
84
     * @param callable(ContainerInterface): mixed $app
85
     */
86 4
    public static function run(callable $app, bool $registerErrorHandlers = true): void
87
    {
88 4
        date_default_timezone_set('Europe/Berlin');
89
90 4
        $container = static::getContainer();
91
92 4
        $config = $container->get(StuConfigInterface::class);
93
94 4
        $container->get(ErrorHandler::class)->register($registerErrorHandlers);
95
96 4
        set_include_path(get_include_path() . PATH_SEPARATOR . $config->getGameSettings()->getWebroot());
97
98
        // TWIG
99 4
        $twigHelper = $container->get(TwigHelper::class);
100 4
        $twigHelper->registerFiltersAndFunctions();
101 4
        $twigHelper->registerGlobalVariables();
102
103 4
        $app($container);
104
    }
105
}
106