Completed
Push — dev ( 1a2672...33c49f )
by Андрей
02:27
created

Module::getConsoleBanner()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 3
Code Lines 2

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
c 1
b 0
f 0
dl 0
loc 3
rs 10
cc 1
eloc 2
nc 1
nop 1
1
<?php
2
/**
3
 * @link    https://github.com/nnx-framework/doctrine
4
 * @author  Malofeykin Andrey  <[email protected]>
5
 */
6
namespace Nnx\Doctrine;
7
8
9
use Zend\ModuleManager\Feature\ConfigProviderInterface;
10
use Zend\ModuleManager\Listener\ServiceListenerInterface;
11
use Zend\ModuleManager\ModuleManager;
12
use Zend\ModuleManager\ModuleManagerInterface;
13
use Zend\Mvc\ModuleRouteListener;
14
use Zend\Mvc\MvcEvent;
15
use Zend\EventManager\EventInterface;
16
use Zend\ModuleManager\Feature\AutoloaderProviderInterface;
17
use Zend\ModuleManager\Feature\BootstrapListenerInterface;
18
use Zend\ModuleManager\Feature\InitProviderInterface;
19
use Zend\ServiceManager\ServiceLocatorInterface;
20
use Nnx\Doctrine\ObjectManager\DoctrineObjectManager;
21
use Nnx\Doctrine\ObjectManager\DoctrineObjectManagerProviderInterface;
22
use Nnx\Doctrine\EntityManager\EntityManager;
23
use Nnx\Doctrine\EntityManager\EntityManagerProviderInterface;
24
use Zend\ModuleManager\Feature\ConsoleUsageProviderInterface;
25
use Zend\ModuleManager\Feature\ConsoleBannerProviderInterface;
26
use Zend\Console\Adapter\AdapterInterface as Console;
27
28
/**
29
 * Class Module
30
 *
31
 * @package Nnx\ModuleOptions
32
 */
33
class Module implements
34
    BootstrapListenerInterface,
35
    AutoloaderProviderInterface,
36
    InitProviderInterface,
37
    ConfigProviderInterface,
38
    ConsoleUsageProviderInterface,
39
    ConsoleBannerProviderInterface
40
{
41
    /**
42
     * Имя секции в конфиги приложения отвечающей за настройки модуля
43
     *
44
     * @var string
45
     */
46
    const CONFIG_KEY = 'nnx_doctrine';
47
48
    /**
49
     * @param ModuleManagerInterface $manager
50
     *
51
     * @throws Exception\InvalidArgumentException
52
     * @throws \Zend\ServiceManager\Exception\ServiceNotFoundException
53
     */
54
    public function init(ModuleManagerInterface $manager)
55
    {
56
        if (!$manager instanceof ModuleManager) {
57
            $errMsg = sprintf('Module manager not implement %s', ModuleManager::class);
58
            throw new Exception\InvalidArgumentException($errMsg);
59
        }
60
61
        /** @var ServiceLocatorInterface $sm */
62
        $sm = $manager->getEvent()->getParam('ServiceManager');
63
64
        if (!$sm instanceof ServiceLocatorInterface) {
65
            $errMsg = sprintf('Service locator not implement %s', ServiceLocatorInterface::class);
66
            throw new Exception\InvalidArgumentException($errMsg);
67
        }
68
        /** @var ServiceListenerInterface $serviceListener */
69
        $serviceListener = $sm->get('ServiceListener');
70
        if (!$serviceListener instanceof ServiceListenerInterface) {
71
            $errMsg = sprintf('ServiceListener not implement %s', ServiceListenerInterface::class);
72
            throw new Exception\InvalidArgumentException($errMsg);
73
        }
74
75
        $serviceListener->addServiceManager(
76
            DoctrineObjectManager::class,
77
            DoctrineObjectManager::CONFIG_KEY,
78
            DoctrineObjectManagerProviderInterface::class,
79
            'getDoctrineObjectManagerConfig'
80
        );
81
82
        $serviceListener->addServiceManager(
83
            EntityManager::class,
84
            EntityManager::CONFIG_KEY,
85
            EntityManagerProviderInterface::class,
86
            'getEntityManagerConfig'
87
        );
88
    }
89
90
    /**
91
     * @inheritdoc
92
     *
93
     * @param EventInterface $e
94
     *
95
     * @return array|void
96
     *
97
     * @throws \Zend\ServiceManager\Exception\ServiceNotFoundException
98
     */
99
    public function onBootstrap(EventInterface $e)
100
    {
101
        /** @var MvcEvent $e */
102
        $eventManager        = $e->getApplication()->getEventManager();
103
        $moduleRouteListener = new ModuleRouteListener();
104
        $moduleRouteListener->attach($eventManager);
105
106
    }
107
108
109
    /**
110
     * @return array
111
     */
112
    public function getAutoloaderConfig()
113
    {
114
        return array(
115
            'Zend\Loader\StandardAutoloader' => array(
116
                'namespaces' => array(
117
                    __NAMESPACE__ => __DIR__ . '/src/',
118
                ),
119
            ),
120
        );
121
    }
122
123
124
    /**
125
     * @return mixed
126
     */
127
    public function getConfig()
128
    {
129
        return include __DIR__ . '/config/module.config.php';
130
    }
131
132
    /**
133
     * @inheritdoc
134
     *
135
     * @param Console $console
136
     *
137
     * @return string
138
     */
139
    public function getConsoleBanner(Console $console){
140
        return 'Tools for entity map';
141
    }
142
143
    /**
144
     * @inheritdoc
145
     *
146
     * @param Console $console
147
     *
148
     * @return array
149
     */
150
    public function getConsoleUsage(Console $console){
151
        return [
152
            'Entity map builder',
153
            'entity-map build --objectManager=' => 'Generation entity maps and cached',
154
            ['--objectManager=MANAGER_NAME', 'ObjectManager name'],
155
            'entity-map clear --objectManager=' => 'Clear entity maps from cached',
156
            ['--objectManager=MANAGER_NAME', 'ObjectManager name'],
157
        ];
158
    }
159
}