/** * @covers Zepto\Router::error() */ public function testError() { $this->router->error(function () { echo '!!!'; }); $this->router->error(); $this->expectOutputString('!!!'); }
public function run() { // $_SERVER['REQUEST_URI'] -> /<controller>/<action>?<key>=<value>&<key>=<value> $request = []; // parse controller -> ['<controller>', '<action>?<key>=<value>&<key>=<value>'] if (isset($_SERVER['REQUEST_URI'])) { $request = explode("/", $_SERVER['REQUEST_URI']); array_shift($request); // WORKAROUND: i.e. '/index.php' => ['', 'index.php'] // no controller specified if (empty($request[0])) { $request[0] = DEFAULT_CONTROLLER; } // initialize parsed controller if (class_exists("app\\controllers\\{$request['0']}Controller")) { $controllerName = "app\\controllers\\{$request['0']}Controller"; $controller = new $controllerName(); } else { Router::error("404"); } } else { $request[0] = DEFAULT_CONTROLLER; $controller = DEFAULT_CONTROLLER; } // parse action -> ['<action>', '<key>=<value>&<key>=<value>'] if (count($request) > 1) { $action = explode("?", $request[1]); if (method_exists($controller, "action{$action['0']}")) { $actionName = "action{$action['0']}"; $params = []; // parse params -> ['<key>=<value>', '<key>=<value>'] // ISSUE: if we will pass i.e. ?param1=value|param2=value if (count($action) > 1) { $paramsRaw = explode("&", $action[1]); for ($i = 0; $i < count($paramsRaw); $i++) { $param = explode("=", $paramsRaw[$i]); $params[$param[0]] = $param[1]; } } // call action $controller->{$actionName}($params); } else { Router::error("404"); } } else { $defaultAction = $controller->getDefaultAction(); $action = "action{$defaultAction}"; $controller->{$action}(); } }
exit('The application environment is not set correctly.'); } } //initiate config new \core\config(); //create alias for Router use core\router, helpers\url; //define routes Router::any('admin', '\\controllers\\admin\\admin@index'); Router::any('admin/login', '\\controllers\\admin\\auth@login'); Router::any('admin/logout', '\\controllers\\admin\\auth@logout'); Router::any('admin/users', '\\controllers\\admin\\users@index'); Router::any('admin/users/add', '\\controllers\\admin\\users@add'); Router::any('admin/users/edit/(:num)', '\\controllers\\admin\\users@edit'); Router::any('admin/posts', '\\controllers\\admin\\posts@index'); Router::any('admin/posts/add', '\\controllers\\admin\\posts@add'); Router::any('admin/posts/edit/(:num)', '\\controllers\\admin\\posts@edit'); Router::any('admin/posts/delete/(:num)', '\\controllers\\admin\\posts@delete'); Router::any('admin/cats', '\\controllers\\admin\\cats@index'); Router::any('admin/cats/add', '\\controllers\\admin\\cats@add'); Router::any('admin/cats/edit/(:num)', '\\controllers\\admin\\cats@edit'); Router::any('admin/cats/delete/(:num)', '\\controllers\\admin\\cats@delete'); Router::any('', '\\controllers\\blog@index'); Router::any('category/(:any)', '\\controllers\\blog@cat'); Router::any('(:any)', '\\controllers\\blog@post'); //if no route found Router::error('\\core\\error@index'); //turn on old style routing Router::$fallback = false; //execute matched routes Router::dispatch();
/**USER ROUTES**/ Router::get('user/profile', 'user@profil'); Router::post('user/profile', 'user@profil'); Router::get('user', 'user@index'); Router::get('user/courts', 'user@courts'); Router::get('user/courts/create', 'user@addcourt'); Router::post('user/courts/create', 'user@addcourt'); Router::get('user/courts/edit/(:num)', 'user@editcourt'); Router::post('user/courts/edit/(:num)', 'user@editcourt'); Router::get('user/courts/delete/(:num)', 'user@deletecourt'); Router::get('user/tours', 'user@tours'); Router::post('user/tours', 'user@tours'); Router::get('user/tours/(:num)', 'user@teams'); Router::post('user/tours/(:num)', 'user@teams'); Router::get('user/tours/createteam/(:num)', 'user@createteam'); Router::post('user/tours/createteam/(:num)', 'user@createteam'); Router::get('user/tours/jointeam/(:num)', 'user@jointeam'); Router::post('user/tours/jointeam/(:num)', 'user@jointeam'); /**ADMIN ROUTES**/ Router::get('admin', 'admin@index'); Router::get('admin/profil', 'admin@profil'); Router::post('admin/profil', 'admin@profil'); Router::get('admin/staffs', 'admin@staffs'); Router::get('admin/staffs/create', 'admin@addstaff'); Router::post('admin/staffs/create', 'admin@addstaff'); Router::get('admin/staffs/delete/(:num)', 'admin@deletestaff'); //if no route found Router::error('error@index'); //execute matched routes Router::dispatch(); ob_flush();
<?php /** * app/routes.php * * @author Zangue <*****@*****.**> */ $router = new Router($app); // Error handling $app->notFound(function () use($router) { $router->error('404'); }); $app->error(function () use($router) { $router->error('500'); }); $router->get('/', 'Hello@index'); $router->get('/hello\\/', 'Hello@hello')->name('hello'); $router->get('/hello/:name/', 'Hello@hello')->name('name');
<?php session_start(); ini_set('display_errors', '1'); include_once 'conf.php'; Conf::init(); if (Conf::$DEBUG_MODE) { error_reporting(E_ALL); ini_set('display_errors', '1'); } include_once Conf::$DIR_MODELS . 'DBConnection.php'; include_once Conf::$DIR_MODELS . 'Router.php'; include_once Conf::$DIR_MODELS . 'Post.php'; include_once Conf::$DIR_MODELS . 'User.php'; include_once Conf::$DIR_CONTROLLERS . 'Controller.php'; include_once Conf::$DIR_CONTROLLERS . 'PostController.php'; include_once Conf::$DIR_CONTROLLERS . 'UserController.php'; Router::r('/post/create', 'PostController', 'getPostUpdatePage'); Router::r('/post/(:id)', 'PostController', 'getPostPage'); Router::r('/post/(:id)/update', 'PostController', 'getPostUpdatePage'); Router::r('/users', 'UserController', 'getUserListPage'); Router::r('/user/login', 'UserController', 'getUserLoginPage'); Router::r('/user/logout', 'UserController', 'getUserLoginPage'); Router::r('/user/(:id)', 'UserController', 'getUserPage'); Router::r('/', 'PostController', 'getHomePage'); Router::error('PostController', 'getHomePage');
<?php // Configs require_once __DIR__ . '/app/config.ini.php'; // Autoloading init spl_autoload_register(function ($class) { require_once ROOT_PATH . '/app/' . str_replace('\\', '/', $class) . '.php'; }); ob_start(); // Routes Router::get('/', 'Blog@home'); Router::get('/(:date)/(:any)/', 'Blog@article'); Router::get('/category/(:any)/', 'Blog@category'); Router::get('/tag/(:any)/', 'Blog@tag'); Router::get('/posts/', 'Blog@posts'); Router::error('Blog@error404'); Router::dispatch(); ob_end_flush();