/** * @param Container $di * @param string $path * * @throws \Graphite\Di\Exception */ public function __construct(Container $di, $path = '') { $this->di = $di; $this->modulesManager = $di->get('ModulesManager'); $this->eventsManager = $di->get('EventsManager'); $this->request = $di->get('Request'); $this->setBasePath($path); }
/** * Find & load controller class depends on Request params * * @return array * * @throws Exception */ private function resolveController() { /** @var \Graphite\Std\Properties $params */ $params = $this->di->get('Request')->getParams(); /** @var $modules ModulesManager */ $modules = $this->di->get('ModulesManager'); $moduleName = ucfirst($params->get('module')); if (!$modules->hasModule($moduleName)) { throw new Exception('Cant find module "' . $moduleName . '"'); } $module = $modules->getModule($moduleName); $ctrlName = ucfirst($params->get('controller')) . 'Controller'; $ctrlFile = $module->getControllersPath() . '/' . $ctrlName . '.php'; $ctrlClass = "\\Modules\\{$moduleName}\\Controller\\{$ctrlName}"; if (!file_exists($ctrlFile)) { throw new Exception('Cant find controller file "' . $ctrlFile . '"'); } require_once $ctrlFile; $ctrl = new $ctrlClass($module, $this->di); if (!$ctrl instanceof AbstractController) { throw new Exception('Controller class must be instance of AbstractController'); } $actionName = $params->get('action') . 'Action'; if (!method_exists($ctrl, $actionName)) { throw new Exception("{$ctrlName} does not have action {$actionName}"); } return array('controller' => $ctrl, 'action' => $actionName); }
/** * @param AbstractModule $module * @param Container $di */ public function __construct(AbstractModule $module, Container $di) { $this->module = $module; $this->di = $di; $this->request = $this->di->get('Request'); }