예제 #1
0
파일: Registry.php 프로젝트: endelwar/zigra
 /**
  * @return $this
  */
 public static function getInstance()
 {
     if (self::$instance === null) {
         $c = __CLASS__;
         self::$instance = new $c();
     }
     return self::$instance;
 }
예제 #2
0
 /**
  * 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();
     }
 }
예제 #3
0
파일: Router.php 프로젝트: endelwar/zigra
 /**
  * @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());
     }
 }