/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, []); } }