use zend router
[GitHub/Stricted/Domain-Control-Panel.git] / vendor / Zend / ServiceManager / Di / DiInstanceManagerProxy.php
1 <?php
2 /**
3 * Zend Framework (http://framework.zend.com/)
4 *
5 * @link http://github.com/zendframework/zf2 for the canonical source repository
6 * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com)
7 * @license http://framework.zend.com/license/new-bsd New BSD License
8 */
9
10 namespace Zend\ServiceManager\Di;
11
12 use Zend\Di\InstanceManager as DiInstanceManager;
13 use Zend\ServiceManager\ServiceLocatorInterface;
14
15 class DiInstanceManagerProxy extends DiInstanceManager
16 {
17 /**
18 * @var DiInstanceManager
19 */
20 protected $diInstanceManager = null;
21
22 /**
23 * @var ServiceLocatorInterface
24 */
25 protected $serviceLocator = null;
26
27 /**
28 * Constructor
29 *
30 * @param DiInstanceManager $diInstanceManager
31 * @param ServiceLocatorInterface $serviceLocator
32 */
33 public function __construct(DiInstanceManager $diInstanceManager, ServiceLocatorInterface $serviceLocator)
34 {
35 $this->diInstanceManager = $diInstanceManager;
36 $this->serviceLocator = $serviceLocator;
37
38 // localize state
39 $this->aliases = &$diInstanceManager->aliases;
40 $this->sharedInstances = &$diInstanceManager->sharedInstances;
41 $this->sharedInstancesWithParams = &$diInstanceManager->sharedInstancesWithParams;
42 $this->configurations = &$diInstanceManager->configurations;
43 $this->typePreferences = &$diInstanceManager->typePreferences;
44 }
45
46 /**
47 * Determine if we have a shared instance by class or alias
48 *
49 * @param $classOrAlias
50 * @return bool
51 */
52 public function hasSharedInstance($classOrAlias)
53 {
54 return ($this->serviceLocator->has($classOrAlias) || $this->diInstanceManager->hasSharedInstance($classOrAlias));
55 }
56
57 /**
58 * Get shared instance
59 *
60 * @param $classOrAlias
61 * @return mixed
62 */
63 public function getSharedInstance($classOrAlias)
64 {
65 if ($this->serviceLocator->has($classOrAlias)) {
66 return $this->serviceLocator->get($classOrAlias);
67 }
68
69 return $this->diInstanceManager->getSharedInstance($classOrAlias);
70 }
71 }