This repository has been archived by the owner on Jan 8, 2020. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 2.6k
/
ServiceManagerConfiguration.php
106 lines (82 loc) · 3.78 KB
/
ServiceManagerConfiguration.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
<?php
namespace Zend\Mvc\Service;
use Zend\ServiceManager\ConfigurationInterface,
Zend\ServiceManager\ServiceManager,
Zend\ServiceManager\ServiceManagerAwareInterface;
class ServiceManagerConfiguration implements ConfigurationInterface
{
protected $services = array(
'Request' => 'Zend\Http\PhpEnvironment\Request',
'Response' => 'Zend\Http\PhpEnvironment\Response',
'RouteListener' => 'Zend\Mvc\RouteListener',
'DispatchListener' => 'Zend\Mvc\DispatchListener',
'ViewManager' => 'Zend\Mvc\View\ViewManager',
);
protected $factories = array(
'EventManager' => 'Zend\Mvc\Service\EventManagerFactory',
'ModuleManager' => 'Zend\Mvc\Service\ModuleManagerFactory',
'Configuration' => 'Zend\Mvc\Service\ConfigurationFactory',
'Router' => 'Zend\Mvc\Service\RouterFactory',
'ControllerPluginLoader' => 'Zend\Mvc\Service\ControllerPluginLoaderFactory',
'ControllerPluginBroker' => 'Zend\Mvc\Service\ControllerPluginBrokerFactory',
'Application' => 'Zend\Mvc\Service\ApplicationFactory',
'DependencyInjector' => 'Zend\Mvc\Service\DiFactory',
'ControllerLoader' => 'Zend\Mvc\Service\ControllerLoaderFactory',
);
protected $abstractFactories = array(
);
protected $aliases = array(
'EM' => 'EventManager',
'Zend\EventManager\EventManagerInterface' => 'EventManager',
'Zend\Di\LocatorInterface' => 'DependencyInjector',
'MM' => 'ModuleManager',
'Config' => 'Configuration',
'Di' => 'DependencyInjector',
);
protected $shared = array(
'EventManager' => false
);
public function __construct(array $configuration = array())
{
if (isset($configuration['services'])) {
$this->services = array_merge($this->services, $configuration['services']);
}
if (isset($configuration['factories'])) {
$this->factories = array_merge($this->factories, $configuration['factories']);
}
if (isset($configuration['abstract_factories'])) {
$this->abstractFactories = array_merge($this->abstractFactories, $configuration['abstract_factories']);
}
if (isset($configuration['aliases'])) {
$this->aliases = array_merge($this->aliases, $configuration['aliases']);
}
if (isset($configuration['shared'])) {
$this->shared = array_merge($this->shared, $configuration['shared']);
}
}
public function configureServiceManager(ServiceManager $serviceManager)
{
foreach ($this->services as $name => $service) {
$serviceManager->setInvokableClass($name, $service);
}
foreach ($this->factories as $name => $factoryClass) {
$serviceManager->setFactory($name, $factoryClass);
}
foreach ($this->abstractFactories as $factoryClass) {
$serviceManager->addAbstractFactory($factoryClass);
}
foreach ($this->aliases as $name => $service) {
$serviceManager->setAlias($name, $service);
}
foreach ($this->shared as $name => $value) {
$serviceManager->setShared($name, $value);
}
$serviceManager->addInitializer(function ($instance) use ($serviceManager) {
if ($instance instanceof ServiceManagerAwareInterface) {
$instance->setServiceManager($instance);
}
});
$serviceManager->setService('ServiceManager', $serviceManager);
$serviceManager->setAlias('Zend\ServiceManager\ServiceManager', 'ServiceManager');
}
}