/** * Static method that dispatches a controller based on the provided controller and action name * * @param string $controller the name of the controller without the trailing word Controller, e.g. Index as opposed to IndexController * @param string $action the name of the action without the trailing word Action, e.g. index as opposed to indexAction * @return object */ public static function dispatch($controller = "Index", $action = "index") { try { $controllerName = $controller . "Controller"; $controllerLocation = FrontController::retrieveControllerFileLocation($controllerName); if (!file_exists($controllerLocation)) { throw new Exception($controllerName . ".class.php does not exist"); } include $controllerLocation; eval("\$object = new " . $controllerName . "();"); $object->__set("action", $action); $object->__set("controller", $controller); $object->__set("controllerName", $controllerName); $object->__set("url", FrontController::retrieveURL()); $object->__set("method", FrontController::retrieveMethod()); $object->__set("model", FrontController::retrieveModel($controller)); $object->__set("view", new View($controller, $action)); if (method_exists($object, "initialize")) { $annotationFactory = new AnnotationFactory($controllerLocation, "initialize"); $object->initialize(); } return $object; } catch (Exception $e) { Functions::dump($e->getMessage()); return NULL; } }