Exemple #1
0
 public function __construct(App $app)
 {
     $default_controller = ucfirst($app->getAppSettings("default_controller"));
     if (isset($_SERVER['PATH_INFO'])) {
         $this->url = $_SERVER['PATH_INFO'];
     } else {
         $this->url = (!is_null($default_controller) ? $default_controller : "Controller") . "/" . $app->getAppSettings("default_action");
     }
     $this->setReferrer();
     $this->setData();
     $this->setPageParametter();
 }
Exemple #2
0
 public function __construct()
 {
     $app = App::getInstance();
     // On initialise l'objet Request
     if ($_ENV['USE_ROUTES']) {
         require '../Config/routes.php';
         $this->request = Router::run(new Request($app));
     } else {
         $this->request = new Request($app);
     }
     // On parse l'url (définition du controller, action,...)
     Router::parse($this->request);
     // On affiche les erreurs ?
     Debug::set();
     // On charge le bon controller
     try {
         $controller = $this->loadController();
     } catch (SwithException $e) {
         (new SwithError(['message' => "Le controller {$this->request->controller} est introuvable", "title" => "Controlleur introuvable"]))->display();
     }
     if (method_exists($controller, "beforeRender")) {
         $controller->beforeRender();
     }
     // On appelle la fonction
     $action = $this->request->getAction();
     $availablesActions = array_diff(get_class_methods($controller), get_class_methods(get_parent_class($controller)));
     if (in_array($action, $availablesActions)) {
         call_user_func_array([$controller, $action], $this->request->params);
     } else {
         (new SwithError(['message' => "Le controller {$this->request->controller} n'a pas de methode {$action}", "title" => "Methode introuvable"]))->display();
     }
     $controller->render($controller->view);
 }
Exemple #3
0
 /**
  * Permet de parser l'url (définir quel est le controller, quelle est l'action)
  * @param Request $request objet Request
  */
 public static function parse(Request $request)
 {
     if (!$request->isRooted) {
         // On définit les prefixes s'il y en a
         Router::setPrefixes();
         // On enlève les / en début et fin d'url
         $url = trim($request->url, '/');
         // On créer un tableau à partir de l'URL
         $params = explode('/', $url);
         // On vérifie si on a un prefixe ou pas
         if (isset($params[0]) && in_array($params[0], self::$prefixes)) {
             // Si oui on le stock dans la request
             $request->prefixe = $params[0];
             // et on l'enlève du tableau URL
             array_shift($params);
         }
         // On déinit ensuite le controlleur
         $request->controller = !empty($params[0]) ? $params[0] : App::getInstance()->getAppSettings("default_controller");
         // On vérifie si y a pas une tentative de hack avec "l'ancien system" en vérifiant qu'on appelle pas controller/prefixe_action
         if (isset($params[1])) {
             $action = $params[1];
             // On check si l'action n'est pas au format prefixe_action
             foreach (Self::$prefixes as $k) {
                 if (strpos($action, $k . '_') === 0) {
                     // Si c'est le cas on définit le prefixe et on reformat l'action
                     $request->prefixe = $k;
                     $action = str_replace($k . '_', '', $action);
                 }
             }
             $request->action = $action;
         } else {
             $request->action = App::getInstance()->getAppSettings("default_action");
         }
         $request->params = array_slice($params, 2);
     }
 }