Completed
Push — master ( 4f3015...33d383 )
by Kamil
08:24 queued 01:12
created

ZendFramework3Initializer::__construct()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 5
Code Lines 3

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
dl 0
loc 5
rs 9.4285
c 0
b 0
f 0
cc 1
eloc 3
nc 1
nop 1
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