-
Notifications
You must be signed in to change notification settings - Fork 0
/
index.php
68 lines (56 loc) · 2.59 KB
/
index.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
<?php
namespace App;
define('DS', DIRECTORY_SEPARATOR); // le caractère séparateur de dossier (/ ou \)
// meilleure portabilité sur les différents systêmes.
define('BASE_DIR', dirname(__FILE__).DS); // pour se simplifier la vie
define('VIEW_DIR', BASE_DIR."view/"); //le chemin où se trouvent les vues
define('PUBLIC_DIR', "/public"); //le chemin où se trouvent les fichiers publics (CSS, JS, IMG)
define('DEFAULT_CTRL', 'Home');//nom du contrôleur par défaut
define('ADMIN_MAIL', "[email protected]");//mail de l'administrateur
require("app/Autoloader.php");
Autoloader::register();
//démarre une session ou récupère la session actuelle
session_start();
//et on intègre la classe Session qui prend la main sur les messages en session
use App\Session as Session;
//---------REQUETE HTTP INTERCEPTEE-----------
$ctrlname = DEFAULT_CTRL;//on prend le controller par défaut
//ex : index.php?ctrl=home
if(isset($_GET['ctrl'])){
$ctrlname = $_GET['ctrl'];
}
//on construit le namespace de la classe Controller à appeller
$ctrlNS = "controller\\".ucfirst($ctrlname)."Controller";
//on vérifie que le namespace pointe vers une classe qui existe
if(!class_exists($ctrlNS)){
//si c'est pas le cas, on choisit le namespace du controller par défaut
$ctrlNS = "controller\\".DEFAULT_CTRL."Controller";
}
$ctrl = new $ctrlNS();
$action = "index";//action par défaut de n'importe quel contrôleur
//si l'action est présente dans l'url ET que la méthode correspondante existe dans le ctrl
if(isset($_GET['action']) && method_exists($ctrl, $_GET['action'])){
//la méthode à appeller sera celle de l'url
$action = $_GET['action'];
}
if(isset($_GET['id'])){
$id = $_GET['id'];
}
else $id = null;
//ex : HomeController->users(null)
$result = $ctrl->$action($id);
/*--------CHARGEMENT PAGE--------*/
if($action == "ajax"){//si l'action était ajax
echo $result;//on affiche directement le return du contrôleur (càd la réponse HTTP sera uniquement celle-ci)
}
else{
ob_start();//démarre un buffer (tampon de sortie)
/*la vue s'insère dans le buffer qui devra être vidé au milieu du layout*/
include($result['view']);
/*je mets cet affichage dans une variable*/
$page = ob_get_contents();
/*j'efface le tampon*/
ob_end_clean();
/*j'affiche le template principal (layout)*/
include VIEW_DIR."layout.php";
}