- <?php
- class Router {
- public function route () {
- $controllerFound = false;
- // Deside the controller
- if (key_exists('controller', $_GET) && !empty($_GET['controller'])) {
- $controllerName = ucfirst(strtolower($_GET['controller']));
- $fullControllerName = $controllerName . 'Controller';
- $controllerNameAndPath = dirname(__FILE__) . '/../app/controller/' . $fullControllerName . '.php';
- if (file_exists($controllerNameAndPath)) {
- include_once $controllerNameAndPath;
- $controller = new $fullControllerName();
- $controllerFound = true;
- }
- } else {
- $controllerName = 'Index';
- $controllerNameAndPath = dirname(__FILE__) . '/../app/controller/IndexController.php';
- if (file_exists($controllerNameAndPath)) {
- include_once $controllerNameAndPath;
- $controller = new IndexController();
- $controllerFound = true;
- }
- }
- $actionFound = false;
- if ($controllerFound) {
- // Deside the action
- if (key_exists('action', $_GET) && !empty($_GET['action'])) {
- $actionName = $_GET['action'];
- $functionName = $actionName . 'Action';
- if (method_exists($controller, $functionName)) {
- $actionFound = true;
- }
- } else {
- $actionName = 'index';
- $functionName = 'indexAction';
- if (method_exists($controller, $functionName)) {
- $actionFound = true;
- }
- }
- }
- if (!$controllerFound || !$actionFound) {
- include_once dirname(__FILE__) . '/../app/controller/ErrorController.php';
- $actionName = 'index';
- $controllerName = 'Error';
- $controller = new ErrorController();
- $controller->setErrorCode('404');
- $controller->setErrorMsg((!$controllerFound ? 'Controller Not Found' : 'Action Not Found'));
- }
- $controller->setActionName($actionName);
- $controller->setControllerName($controllerName);
- $controller->setParams($_REQUEST);
- $controller->init();
- $controller->runAction();
- }
- }