59 lines
1.6 KiB
PHP
59 lines
1.6 KiB
PHP
<?php
|
|
|
|
require_once $GLOBALS['app_path'].'Framework/Request.php';
|
|
require_once $GLOBALS['app_path'].'Framework/View.php';
|
|
|
|
class Router {
|
|
|
|
public function routingRequest() {
|
|
try {
|
|
$request = new Request(array_merge($_GET, $_POST));
|
|
|
|
$controller = $this->createController($request);
|
|
$action = $this->createAction($request);
|
|
|
|
$controller->executeAction($action);
|
|
}
|
|
catch (Exception $e) {
|
|
$this->error($e);
|
|
}
|
|
}
|
|
|
|
private function createController($request) {
|
|
$controller = "Default";
|
|
if ($request->existParameter('controller')) {
|
|
$controller = $request->getParameter('controller');
|
|
$controller = ucfirst(strtolower($controller));
|
|
}
|
|
|
|
$classController = "Controller" . $controller;
|
|
$fileController = $GLOBALS['app_path']."Controller/" . $classController . ".php";
|
|
if (file_exists($fileController)) {
|
|
|
|
require($fileController);
|
|
$controller = new $classController();
|
|
$controller->setRequest($request);
|
|
return $controller;
|
|
}
|
|
else
|
|
{
|
|
throw new Exception("Fichier '$fileController' introuvable");
|
|
return null;
|
|
}
|
|
}
|
|
|
|
private function createAction(Request $request) {
|
|
$action = "index";
|
|
if ($request->existParameter('action')) {
|
|
$action = $request->getParameter('action');
|
|
}
|
|
return $action;
|
|
}
|
|
|
|
private function error($exception) {
|
|
$view = new View('error');
|
|
$view->generate(array('msgError' => $exception->getMessage()));
|
|
}
|
|
|
|
}
|