<?php require 'autoload.php'; date_default_timezone_set('Asia/Jakarta'); // Use helper classes from Application use Application\HTTP\Request; use Application\HTTP\Response; use Application\Services\ServiceContainer; ServiceContainer::Database(); ServiceContainer::Session(); // Get all routes $routes = require 'routes.php'; // Get request URI $uri = $_SERVER['PHP_SELF']; // Cut off index.php $uri = substr($uri,strlen('/index.php'),strlen($uri)-strlen('/index.php')); // Serve static files first if(file_exists('Application/Static'.$uri) && $uri != '') { $extension = pathinfo('Application/Static'.$uri, PATHINFO_EXTENSION); if($extension == "js") { header("Content-Type: text/javascript"); } else if($extension == "css") { header("Content-Type: text/css"); } else { header("Content-Type: ".mime_content_type('Application/Static'.$uri)); } readfile('Application/Static'.$uri); exit; } if(file_exists('Application/Storage'.$uri) && $uri != '') { $extension = pathinfo('Application/Storage'.$uri, PATHINFO_EXTENSION); if($extension == "js") { header("Content-Type: text/javascript"); } else if($extension == "css") { header("Content-Type: text/css"); } else { header("Content-Type: ".mime_content_type('Application/Storage'.$uri)); } readfile('Application/Storage'.$uri); exit; } // Remove trailing slash if(substr($uri,strlen($uri)-1,1) == '/') { $uri = substr($uri,0,strlen($uri)-1); } // Build request object to pass to controller $request = new Request(); $response = new Response(); $request_method = $_SERVER['REQUEST_METHOD']; // Get current route from uri if(!array_key_exists($request_method.':'.$uri,$routes)) { $response->statusCode(404)->view('404')->render(); die(); } $route = $routes[$request_method.':'.$uri]; // Duar (actually, split the method string to class name and method name) $method_part = explode("@",$route['controller']); // Get class name and method name $class = $method_part[0]; $method = $method_part[1]; // Get fully qualified class name of route $fqcn = 'Application\\Controllers\\'.$class; $controller = new $fqcn(); $response = $controller->$method($request,$response); $response->render(); // Convert array to JSON