- <?php
- /**
- * Zend Framework (http://framework.zend.com/)
- *
- * @link http://github.com/zendframework/zf2 for the canonical source repository
- * @copyright Copyright (c) 2005-2014 Zend Technologies USA Inc. (http://www.zend.com)
- * @license http://framework.zend.com/license/new-bsd New BSD License
- */
-
- namespace Zend\Mvc\Service;
-
- use Zend\EventManager\EventManagerAwareInterface;
- use Zend\EventManager\EventManagerInterface;
- use Zend\ServiceManager\ConfigInterface;
- use Zend\ServiceManager\ServiceLocatorAwareInterface;
- use Zend\ServiceManager\ServiceManager;
- use Zend\ServiceManager\ServiceManagerAwareInterface;
-
- class ServiceManagerConfig implements ConfigInterface
- {
- /**
- * Services that can be instantiated without factories
- *
- * @var array
- */
- protected $invokables = array(
- 'SharedEventManager' => 'Zend\EventManager\SharedEventManager',
- );
-
- /**
- * Service factories
- *
- * @var array
- */
- protected $factories = array(
- 'EventManager' => 'Zend\Mvc\Service\EventManagerFactory',
- 'ModuleManager' => 'Zend\Mvc\Service\ModuleManagerFactory',
- );
-
- /**
- * Abstract factories
- *
- * @var array
- */
- protected $abstractFactories = array();
-
- /**
- * Aliases
- *
- * @var array
- */
- protected $aliases = array(
- 'Zend\EventManager\EventManagerInterface' => 'EventManager',
- );
-
- /**
- * Shared services
- *
- * Services are shared by default; this is primarily to indicate services
- * that should NOT be shared
- *
- * @var array
- */
- protected $shared = array(
- 'EventManager' => false,
- );
-
- /**
- * Constructor
- *
- * Merges internal arrays with those passed via configuration
- *
- * @param array $configuration
- */
- public function __construct(array $configuration = array())
- {
- if (isset($configuration['invokables'])) {
- $this->invokables = array_merge($this->invokables, $configuration['invokables']);
- }
-
- 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']);
- }
-
- }
-
- /**
- * Configure the provided service manager instance with the configuration
- * in this class.
- *
- * In addition to using each of the internal properties to configure the
- * service manager, also adds an initializer to inject ServiceManagerAware
- * and ServiceLocatorAware classes with the service manager.
- *
- * @param ServiceManager $serviceManager
- * @return void
- */
- public function configureServiceManager(ServiceManager $serviceManager)
- {
- foreach ($this->invokables as $name => $class) {
- $serviceManager->setInvokableClass($name, $class);
- }
-
- 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 EventManagerAwareInterface) {
- if ($instance->getEventManager() instanceof EventManagerInterface) {
- $instance->getEventManager()->setSharedManager(
- $serviceManager->get('SharedEventManager')
- );
- } else {
- $instance->setEventManager($serviceManager->get('EventManager'));
- }
- }
- });
-
- $serviceManager->addInitializer(function ($instance) use ($serviceManager) {
- if ($instance instanceof ServiceManagerAwareInterface) {
- $instance->setServiceManager($serviceManager);
- }
- });
-
- $serviceManager->addInitializer(function ($instance) use ($serviceManager) {
- if ($instance instanceof ServiceLocatorAwareInterface) {
- $instance->setServiceLocator($serviceManager);
- }
- });
-
- $serviceManager->setService('ServiceManager', $serviceManager);
- $serviceManager->setAlias('Zend\ServiceManager\ServiceLocatorInterface', 'ServiceManager');
- $serviceManager->setAlias('Zend\ServiceManager\ServiceManager', 'ServiceManager');
- }
- }
# |
Change |
User |
Description |
Committed |
|
#1
|
18334 |
Liz Lam |
initial add of jambox |
9 years ago
|
|