diff --git a/public/index.php b/public/index.php index b14eceb95e995c2a1cad22102b593be205482639..3496c60564ce8bc1a8b88dba7abf2dfd339876cd 100644 --- a/public/index.php +++ b/public/index.php @@ -6,4 +6,5 @@ require __DIR__.'/../src/app.php'; $App = DagoJek::Instance(); + $App->prepareRouting(); $App->Start(); \ No newline at end of file diff --git a/src/app.php b/src/app.php index 62e26a9e7a274f85f716791bc6685baa29407aa9..0bdcc30d18bb88c5e01a038f8c1cc6da37eb56c8 100644 --- a/src/app.php +++ b/src/app.php @@ -1,7 +1,13 @@ <?php + +/** + * DagoJek is a singleton class that representing DagoJek application + */ class DagoJek { + private $routingTable = array(); + private function __construct() { // empty constructor } @@ -26,6 +32,10 @@ class DagoJek { } } + public function prepareRouting() { + require __DIR__.'/route.php'; + } + private function getCurrentUri() { $basepath = implode('/', array_slice(explode('/', $_SERVER['SCRIPT_NAME']), 0, -1)) . '/'; $uri = substr($_SERVER['REQUEST_URI'], strlen($basepath)); @@ -34,26 +44,20 @@ class DagoJek { return $uri; } + public function addRoute($route, $function) { + $data = array( + $route => $function, + ); + $this->routingTable += $data; + } + public function Start() { $base_url = $this->getCurrentUri(); - switch ($base_url) { - case "/" : - echo "Login page"; - break; - case "/login" : - MainController::LoginHandler(); - break; - case "/register" : - echo "Register page"; - break; - case "/profil" : - echo "Profil page"; - break; - default : - echo "404 not found"; + if (array_key_exists ($base_url, $this->routingTable)) { + $this->routingTable[$base_url](); + } else { + die ("404 Page not Found"); } } } - -?> \ No newline at end of file diff --git a/src/controller/MainController.php b/src/controller/MainController.php index 30991ff78f6f880c12a900eb512cc3da4812d820..c0fa8167c4d80d68f33d6ea3e1411852efec3e28 100644 --- a/src/controller/MainController.php +++ b/src/controller/MainController.php @@ -6,5 +6,8 @@ class MainController { echo "This is login handler"; } + public static function DefaultHandler() { + echo "This is default handler"; + } } \ No newline at end of file diff --git a/src/route.php b/src/route.php new file mode 100644 index 0000000000000000000000000000000000000000..0b033a3664aaf90ff47110e1a6ed2f17ea3019e6 --- /dev/null +++ b/src/route.php @@ -0,0 +1,15 @@ +<?php + +// ---------------------------- LIST OF ALL BASIC ROUTES ---------------------------- + +$AppInstance = Dagojek::Instance(); + +$AppInstance->addRoute("/", 'MainController::LoginHandler'); +$AppInstance->addRoute("/login", 'MainController::LoginHandler'); +$AppInstance->addRoute("/register", 'MainController::DefaultHandler'); +$AppInstance->addRoute("/main/profil", 'MainController::DefaultHandler'); +$AppInstance->addRoute("/main/profil/edit", 'MainController::DefaultHandler'); +$AppInstance->addRoute("/main/history", 'MainController::DefaultHandler'); +$AppInstance->addRoute("/main/order/", 'MainController::DefaultHandler'); +$AppInstance->addRoute("/main/order/select", 'MainController::DefaultHandler'); +$AppInstance->addRoute("/main/order/finish", 'MainController::DefaultHandler');