Skip to content

Commit 25a35d0

Browse files
author
mfris
committed
fix - ControllerManager injects ZF core services into created controllers
1 parent 2b64b0f commit 25a35d0

File tree

1 file changed

+19
-0
lines changed

1 file changed

+19
-0
lines changed

src/DI/ZendFramework2/Service/ControllerManager.php

+19
Original file line numberDiff line numberDiff line change
@@ -10,9 +10,11 @@
1010
namespace DI\ZendFramework2\Service;
1111

1212
use Interop\Container\ContainerInterface;
13+
use Zend\Mvc\Controller\AbstractController;
1314
use Zend\ServiceManager\Exception;
1415
use Zend\Mvc\Controller\ControllerManager as ZendControllerManager;
1516
use Zend\ServiceManager\ConfigInterface;
17+
use Zend\ServiceManager\InitializerInterface;
1618
use Zend\Stdlib\DispatchableInterface;
1719

1820
/**
@@ -63,6 +65,7 @@ public function get($name, $options = array(), $usePeeringServiceManagers = true
6365

6466
if ($this->container->has($name)) {
6567
$controller = $this->container->get($name);
68+
$this->initialize($controller);
6669
} elseif (parent::has($name, true, $usePeeringServiceManagers)) {
6770
$controller = parent::get($name, $options, $usePeeringServiceManagers);
6871
}
@@ -95,4 +98,20 @@ public function has($name, $checkAbstractFactories = true, $usePeeringServiceMan
9598

9699
return false;
97100
}
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+
}
98117
}

0 commit comments

Comments
 (0)