/** * @return $this */ public static function getInstance() { if (self::$instance === null) { $c = __CLASS__; self::$instance = new $c(); } return self::$instance; }
/** * Zigra_Controller constructor. * @param Zigra_Request $request * @param array $params * @param null $session_manager */ public function __construct(Zigra_Request $request, array $params, $session_manager = null) { $this->request = $request; $this->params = $params; if ($session_manager) { $this->registry = $session_manager->getSegment('zigra\\registry'); $this->tplVar = $session_manager->getSegment('zigra\\tplvar'); } else { $this->registry = Zigra_Registry::getInstance(); $this->tplVar = Zigra_Registry_Tplvar::getInstance(); } }
/** * @param $className * @param $action * @param Zigra_Request $request * @param array $params * @param null $session_manager * @param bool $isError */ private static function callControllerAction($className, $action, Zigra_Request $request, array $params, $session_manager = null, $isError = false) { // TODO: make this contruct indipendent from app path $classFileName = '../app/controller/' . $className . 'Controller.php'; try { if (file_exists($classFileName)) { include_once $classFileName; $fullClassName = ucfirst($className) . 'Controller'; $controller = new $fullClassName($request, $params, $session_manager); if (is_callable(array($controller, $action))) { if ($session_manager) { $registry = $session_manager->getSegment('zigra\\registry'); } else { $registry = Zigra_Registry::getInstance(); } $registry->set('controller', $className); $registry->set('action', $action); call_user_func_array(array($controller, 'preExecute'), array($request)); call_user_func_array(array($controller, $action), array($request)); call_user_func_array(array($controller, 'postExecute'), array($request)); return; } else { throw new Zigra_Exception('Cannot call module: ' . $className . '->' . $action); } } else { if ($isError === false) { throw new Zigra_Exception('Cannot find class ' . $className . ' (' . $classFileName . ')'); } else { header('HTTP/1.0 404 Not Found'); echo '<h1>404 Not Found</h1>'; echo 'The page that you have requested could not be found.'; exit; } } } catch (Zigra_Exception $e) { Zigra_Exception::renderError($e->getCode(), $e->getMessage()); } }