From 43b8604d970787790fb47069857ddbb5d42152bc Mon Sep 17 00:00:00 2001 From: Antonio de la Rosa Date: Fri, 29 Apr 2022 19:31:13 +0200 Subject: [PATCH] Making functions for the principal routines --- index.php | 101 +++-------------------------------------- libraries/Routes.php | 106 +++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 112 insertions(+), 95 deletions(-) create mode 100644 libraries/Routes.php diff --git a/index.php b/index.php index c57116c..868b65c 100644 --- a/index.php +++ b/index.php @@ -3,109 +3,20 @@ use PhangoApp\PhaUtils\Utils; include('libraries/Utils.php'); -include('vendor/autoload.php'); +include('libraries/Routes.php'); -class Config { - - static public $home_module='welcome'; +if(is_file('vendor/autoload.php')) { + + include('vendor/autoload.php'); } ob_start(); -$path_info=isset($_SERVER['PATH_INFO']) ? $_SERVER['PATH_INFO'] : ''; - -// Very simple router, two levels deep, module and controller -// First deep element in path modules/{module}/controllers/index.php -> /module -// Second deep element in path modules/{module}/controllers/{controller}.php -> /module/controller -// Third deep element and more in path are variables into controller function -// Filter the elements path with slugify function. - Utils::load_config('settings/config'); -if($path_info!='') { - - $arr_path=explode('/', $path_info); - - if($arr_path[count($arr_path)-1]=='') { - - unset($arr_path[count($arr_path)-1]); - - } +$path_info=isset($_SERVER['PATH_INFO']) ? $_SERVER['PATH_INFO'] : ''; - unset($arr_path[0]); - - foreach($arr_path as $k => $info) { - - $arr_path[$k]=Utils::slugify($info); - } - - switch (count($arr_path)) { - - case 0: - - $controller='modules/'.Config::$home_module.'/controllers/index.php'; - - get_controller($controller, []); - - break; - - case 1: - - $controller='modules/'.$arr_path[1].'/controllers/index.php'; - - get_controller($controller, []); - - break; - - case 2: - - $controller='modules/'.$arr_path[1].'/controllers/'.$arr_path[2].'.php'; - - get_controller($controller, []); - - break; - - default: - - $controller='modules/'.$arr_path[1].'/controllers/'.$arr_path[2].'.php'; - - $args=array_slice($arr_path, 2, count($arr_path)); - - get_controller($controller, $args); - - break; - - } - -} -else { - - $controller='modules/'.Config::$home_module.'/controllers/index.php'; - - get_controller($controller, []); - -} +echo \PhangoApp\PhaRouter\get_route($path_info); ob_end_flush(); - -function get_controller($controller, $args=[]) { - - if(is_file($controller)) { - - include($controller); - - echo call_user_func_array('controller', $args); - - } - else { - - echo 'Page not found'; - - http_response_code(404); - - exit(1); - - } - -} diff --git a/libraries/Routes.php b/libraries/Routes.php new file mode 100644 index 0000000..60a5937 --- /dev/null +++ b/libraries/Routes.php @@ -0,0 +1,106 @@ + /module +// Second deep element in path modules/{module}/controllers/{controller}.php -> /module/controller +// Third deep element and more in path are variables into controller function +// Filter the elements path with slugify function. + +function get_controller($controller, $args=[]) { + + if(is_file($controller)) { + + include($controller); + + return call_user_func_array('controller', $args); + + } + else { + + echo 'Page not found'; + + http_response_code(404); + + exit(1); + + } + +} + +function get_route($path_info) { + + if($path_info!='') { + + $arr_path=explode('/', $path_info); + + if($arr_path[count($arr_path)-1]=='') { + + unset($arr_path[count($arr_path)-1]); + + } + + unset($arr_path[0]); + + foreach($arr_path as $k => $info) { + + $arr_path[$k]=Utils::slugify($info); + } + + switch (count($arr_path)) { + + case 0: + + $controller='modules/'.\PhangoApp\PhaRouter\Config::$home_module.'/controllers/index.php'; + + return \PhangoApp\PhaRouter\get_controller($controller, []); + + break; + + case 1: + + $controller='modules/'.$arr_path[1].'/controllers/index.php'; + + return \PhangoApp\PhaRouter\get_controller($controller, []); + + break; + + case 2: + + $controller='modules/'.$arr_path[1].'/controllers/'.$arr_path[2].'.php'; + + return \PhangoApp\PhaRouter\get_controller($controller, []); + + break; + + default: + + $controller='modules/'.$arr_path[1].'/controllers/'.$arr_path[2].'.php'; + + $args=array_slice($arr_path, 2, count($arr_path)); + + return \PhangoApp\PhaRouter\get_controller($controller, $args); + + break; + + } + + } + else { + + $controller='modules/'.\PhangoApp\PhaRouter\Config::$home_module.'/controllers/index.php'; + + return \PhangoApp\PhaRouter\get_controller($controller, []); + + } + + +}