ZendFramework3Initializer   A
last analyzed

Complexity

Total Complexity 5

Size/Duplication

Total Lines 46
Duplicated Lines 0 %

Coupling/Cohesion

Components 0
Dependencies 2

Importance

Changes 0
Metric Value
wmc 5
lcom 0
cbo 2
dl 0
loc 46
rs 10
c 0
b 0
f 0

2 Methods

Rating   Name   Duplication   Size   Complexity  
A __construct() 0 5 1
B boot() 0 26 4
1
<?php
2
declare(strict_types=1);
3
namespace VirCom\Behat3ZendFramework3Extension\Services;
4
5
use Zend\Mvc\ApplicationInterface;
6
use Zend\Mvc\Service\ServiceManagerConfig;
7
use Zend\ServiceManager\ServiceManager;
8
9
class ZendFramework3Initializer
10
{
11
    /**
12
     * @var string
13
     */
14
    protected $configurationFilePath;
15
16
    /**
17
     * @param string $configurationFilePath
18
     */
19
    public function __construct(
20
        string $configurationFilePath
21
    ) {
22
        $this->configurationFilePath = $configurationFilePath;
23
    }
24
25
    /**
26
     * @return \Zend\Mvc\ApplicationInterface
27
     */
28
    public function boot(): ApplicationInterface
29
    {
30
        $configuration = require $this->configurationFilePath;
31
32
        $serviceManagerConfig = isset($configuration['service_manager']) ? $configuration['service_manager'] : [];
33
        $serviceManagerConfig = new ServiceManagerConfig($serviceManagerConfig);
34
35
        $serviceManager = new ServiceManager();
36
        $serviceManagerConfig->configureServiceManager($serviceManager);
37
        $serviceManager->setService('ApplicationConfig', $configuration);
38
39
        $serviceManager->get('ModuleManager')->loadModules();
40
        $listenersFromAppConfig     = isset($configuration['listeners']) ? $configuration['listeners'] : [];
41
        $config                     = $serviceManager->get('config');
42
        $listenersFromConfigService = isset($config['listeners']) ? $config['listeners'] : [];
43
44
        $listeners = array_unique(
45
            array_merge(
46
                $listenersFromConfigService,
47
                $listenersFromAppConfig
48
            )
49
        );
50
51
        return $serviceManager->get('Application')
52
            ->bootstrap($listeners);
53
    }
54
}
55