|
10 | 10 | namespace DI\ZendFramework2\Service;
|
11 | 11 |
|
12 | 12 | use Interop\Container\ContainerInterface;
|
| 13 | +use Zend\Mvc\Controller\AbstractController; |
13 | 14 | use Zend\ServiceManager\Exception;
|
14 | 15 | use Zend\Mvc\Controller\ControllerManager as ZendControllerManager;
|
15 | 16 | use Zend\ServiceManager\ConfigInterface;
|
| 17 | +use Zend\ServiceManager\InitializerInterface; |
16 | 18 | use Zend\Stdlib\DispatchableInterface;
|
17 | 19 |
|
18 | 20 | /**
|
@@ -63,6 +65,7 @@ public function get($name, $options = array(), $usePeeringServiceManagers = true
|
63 | 65 |
|
64 | 66 | if ($this->container->has($name)) {
|
65 | 67 | $controller = $this->container->get($name);
|
| 68 | + $this->initialize($controller); |
66 | 69 | } elseif (parent::has($name, true, $usePeeringServiceManagers)) {
|
67 | 70 | $controller = parent::get($name, $options, $usePeeringServiceManagers);
|
68 | 71 | }
|
@@ -95,4 +98,20 @@ public function has($name, $checkAbstractFactories = true, $usePeeringServiceMan
|
95 | 98 |
|
96 | 99 | return false;
|
97 | 100 | }
|
| 101 | + |
| 102 | + /** |
| 103 | + * injects Zend core services into the given controller |
| 104 | + * |
| 105 | + * @param AbstractController $controller |
| 106 | + */ |
| 107 | + private function initialize(AbstractController $controller) |
| 108 | + { |
| 109 | + foreach ($this->initializers as $initializer) { |
| 110 | + if ($initializer instanceof InitializerInterface) { |
| 111 | + $initializer->initialize($controller, $this); |
| 112 | + } else { |
| 113 | + call_user_func($initializer, $controller, $this); |
| 114 | + } |
| 115 | + } |
| 116 | + } |
98 | 117 | }
|
0 commit comments