/** * @param $controllerStr * @param null $actionStr * @param array $additionalParams * @return mixed|null|ControllerInterface */ public function getController($controllerStr, $actionStr = null, $additionalParams = array()) { $controller = null; if (!empty($this->controllers[$controllerStr])) { /* @var $controller ControllerInterface */ $controller = $this->controllers[$controllerStr]; } else { if (!$this->configIsEmpty('namespace')) { ControllerFactory::setConfig('namespace', $this->config('namespace')); } $controller = ControllerFactory::create($this, $controllerStr, $actionStr, $additionalParams); $this->controllers[$controllerStr] = $controller; } if (!empty($controller)) { $controller->resetParams(); if (!empty($additionalParams)) { $controller->setParams($additionalParams); } if (!is_null($actionStr)) { $controller->setCurrentAction($actionStr); } } return $controller; }