-
Notifications
You must be signed in to change notification settings - Fork 0
/
Index.php
73 lines (62 loc) · 2.57 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
69
70
71
72
73
<?php
namespace Core;
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
// Fait Coreel A l'autoloader dans le dossier Core
require("core/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 Core\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 à Coreeller
$ctrlNS = "controllers\\" . 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";
}
// crtl(controller) devient un nouveau NamespaceController
$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 à Coreeller sera celle de l'url
$action = $_GET['action'];
}
//
if (isset($_GET['id'])) {
$id = $_GET['id'];
} else
$id = null;
if (isset($_GET['name'])) {
$name = $_GET['name'];
} else
$name = 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*/
$contenu = ob_get_contents();
/*j'efface le tampon*/
ob_end_clean();
/*j'affiche le template principal (layout)*/
include VIEW_DIR . "layout.php";
}