Completed
Push — master ( 8e5da6...3731ee )
by Андрей
04:58 queued 02:18
created

Module::getAutoloaderConfig()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 10
Code Lines 5

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
c 1
b 0
f 0
dl 0
loc 10
rs 9.4285
cc 1
eloc 5
nc 1
nop 0
1
<?php
2
/**
3
 * @link    https://github.com/nnx-framework/doctrine-fixture-module
4
 * @author  Malofeykin Andrey  <[email protected]>
5
 */
6
namespace Nnx\DoctrineFixtureModule;
7
8
use Nnx\DoctrineFixtureModule\FilterUsedFixtureService\FilterUsedFixtureListener;
9
use Nnx\DoctrineFixtureModule\FixtureInitializer\FixtureInitializerManager;
10
use Nnx\DoctrineFixtureModule\FixtureInitializer\FixtureInitializerManagerInterface;
11
use Nnx\DoctrineFixtureModule\FixtureInitializer\FixtureInitializerProviderInterface;
12
use Nnx\ModuleOptions\ModuleConfigKeyProviderInterface;
13
use Zend\Console\Adapter\AdapterInterface;
14
use Zend\ModuleManager\Feature\ConfigProviderInterface;
15
use Zend\ModuleManager\Listener\ServiceListenerInterface;
16
use Zend\ModuleManager\ModuleManager;
17
use Zend\ModuleManager\ModuleManagerInterface;
18
use Zend\Mvc\ModuleRouteListener;
19
use Zend\Mvc\MvcEvent;
20
use Zend\EventManager\EventInterface;
21
use Zend\ModuleManager\Feature\AutoloaderProviderInterface;
22
use Zend\ModuleManager\Feature\BootstrapListenerInterface;
23
use Zend\ModuleManager\Feature\InitProviderInterface;
24
use Zend\ModuleManager\Feature\DependencyIndicatorInterface;
25
use Zend\ServiceManager\ServiceLocatorInterface;
26
use Nnx\DoctrineFixtureModule\Loader\FixtureLoaderManagerInterface;
27
use Nnx\DoctrineFixtureModule\Loader\FixtureLoaderManager;
28
use Nnx\DoctrineFixtureModule\Loader\FixtureLoaderProviderInterface;
29
use Nnx\DoctrineFixtureModule\Filter\FixtureFilterManagerInterface;
30
use Nnx\DoctrineFixtureModule\Filter\FixtureFilterManager;
31
use Nnx\DoctrineFixtureModule\Filter\FixtureFilterProviderInterface;
32
use Nnx\DoctrineFixtureModule\Executor\FixtureExecutorManagerInterface;
33
use Nnx\DoctrineFixtureModule\Executor\FixtureExecutorManager;
34
use Nnx\DoctrineFixtureModule\Executor\FixtureExecutorProviderInterface;
35
use Nnx\ModuleOptions\Module as ModuleOptions;
36
use Zend\ModuleManager\Feature\ConsoleUsageProviderInterface;
37
use Zend\ModuleManager\Feature\ConsoleBannerProviderInterface;
38
39
/**
40
 * Class Module
41
 *
42
 * @package Nnx\DoctrineFixtureModule
43
 */
44
class Module implements
45
    BootstrapListenerInterface,
46
    AutoloaderProviderInterface,
47
    InitProviderInterface,
48
    ConfigProviderInterface,
49
    ModuleConfigKeyProviderInterface,
50
    DependencyIndicatorInterface,
51
    ConsoleUsageProviderInterface,
52
    ConsoleBannerProviderInterface
53
{
54
    /**
55
     * Имя секции в конфиги приложения отвечающей за настройки модуля
56
     *
57
     * @var string
58
     */
59
    const CONFIG_KEY = 'nnx_doctrine_fixture_module';
60
61
    /**
62
     * Имя модуля
63
     *
64
     * @var string
65
     */
66
    const MODULE_NAME = __NAMESPACE__;
67
68
    /**
69
     * @inheritDoc
70
     */
71
    public function getModuleDependencies()
72
    {
73
        return [
74
            ModuleOptions::MODULE_NAME
75
        ];
76
    }
77
78
79
    /**
80
     * @inheritDoc
81
     */
82
    public function getModuleConfigKey()
83
    {
84
        return static::CONFIG_KEY;
85
    }
86
87
    /**
88
     * @param ModuleManagerInterface $manager
89
     *
90
     * @throws Exception\InvalidArgumentException
91
     * @throws \Zend\ServiceManager\Exception\ServiceNotFoundException
92
     */
93
    public function init(ModuleManagerInterface $manager)
94
    {
95
        if (!$manager instanceof ModuleManager) {
96
            $errMsg =sprintf('Module manager not implement %s', ModuleManager::class);
97
            throw new Exception\InvalidArgumentException($errMsg);
98
        }
99
100
        /** @var ServiceLocatorInterface $sm */
101
        $sm = $manager->getEvent()->getParam('ServiceManager');
102
103
        if (!$sm instanceof ServiceLocatorInterface) {
104
            $errMsg = sprintf('Service locator not implement %s', ServiceLocatorInterface::class);
105
            throw new Exception\InvalidArgumentException($errMsg);
106
        }
107
        /** @var ServiceListenerInterface $serviceListener */
108
        $serviceListener = $sm->get('ServiceListener');
109
        if (!$serviceListener instanceof ServiceListenerInterface) {
110
            $errMsg = sprintf('ServiceListener not implement %s', ServiceListenerInterface::class);
111
            throw new Exception\InvalidArgumentException($errMsg);
112
        }
113
114
        $serviceListener->addServiceManager(
115
            FixtureLoaderManagerInterface::class,
116
            FixtureLoaderManager::CONFIG_KEY,
117
            FixtureLoaderProviderInterface::class,
118
            'getFixtureLoaderConfig'
119
        );
120
121
        $serviceListener->addServiceManager(
122
            FixtureFilterManagerInterface::class,
123
            FixtureFilterManager::CONFIG_KEY,
124
            FixtureFilterProviderInterface::class,
125
            'getFixtureFilterConfig'
126
        );
127
128
        $serviceListener->addServiceManager(
129
            FixtureExecutorManagerInterface::class,
130
            FixtureExecutorManager::CONFIG_KEY,
131
            FixtureExecutorProviderInterface::class,
132
            'getFixtureExecutorConfig'
133
        );
134
135
        $serviceListener->addServiceManager(
136
            FixtureInitializerManagerInterface::class,
137
            FixtureInitializerManager::CONFIG_KEY,
138
            FixtureInitializerProviderInterface::class,
139
            'getFixtureInitializerConfig'
140
        );
141
    }
142
143
    /**
144
     * @inheritdoc
145
     *
146
     * @param EventInterface $e
147
     *
148
     * @return array|void
149
     * @throws \Nnx\DoctrineFixtureModule\Exception\InvalidArgumentException
150
     *
151
     * @throws \Zend\ServiceManager\Exception\ServiceNotFoundException
152
     */
153
    public function onBootstrap(EventInterface $e)
154
    {
155
        if (!$e instanceof MvcEvent) {
156
            $errMsg =sprintf('Event not implement %s', MvcEvent::class);
157
            throw new Exception\InvalidArgumentException($errMsg);
158
        }
159
160
        $app = $e->getApplication();
161
162
        $eventManager        = $app->getEventManager();
163
        $moduleRouteListener = new ModuleRouteListener();
164
        $moduleRouteListener->attach($eventManager);
165
166
        $sl = $app->getServiceManager();
167
168
        /** @var  FilterUsedFixtureListener$filterUsedFixtureListener */
169
        $filterUsedFixtureListener = $sl->get(FilterUsedFixtureListener::class);
170
        $filterUsedFixtureListener->attach($eventManager);
171
172
173
    }
174
175
176
    /**
177
     * @return array
178
     */
179
    public function getAutoloaderConfig()
180
    {
181
        return [
182
            'Zend\Loader\StandardAutoloader' => [
183
                'namespaces' => [
184
                    __NAMESPACE__ => __DIR__ . '/src/',
185
                ],
186
            ],
187
        ];
188
    }
189
190
191
    /**
192
     * @inheritdoc
193
     *
194
     * @return array
195
     */
196
    public function getConfig()
197
    {
198
        return include __DIR__ . '/config/module.config.php';
199
    }
200
201
    /**
202
     * @inheritDoc
203
     */
204
    public function getConsoleUsage(AdapterInterface $console)
205
    {
206
        return [
207
            'Doctrine data fixture',
208
            'nnx:fixture execute-fixture --fixtureClassName=' => 'Run fixture bu class name',
209
            ['--fixtureClassName=FIXTURE_CLASS_NAME', 'Fixture class name'],
210
            'nnx:fixture run-executor --executorName=' => 'Run fixture executor by name',
211
            ['--executorName==EXECUTOR_NAME', 'Executor name'],
212
        ];
213
    }
214
215
    /**
216
     * @inheritDoc
217
     */
218
    public function getConsoleBanner(AdapterInterface $console)
219
    {
220
        return 'Doctrine fixture tools';
221
    }
222
223
224
}