Newer
Older
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
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
<?php
namespace Mvc\Controller;
use \Mvc\Http\Request as Request;
use \Mvc\Http\Response as Response;
use \Mvc\Router as Router;
use \Mvc\Dispatcher as Dispatcher;
/**
* Classe représentant le contrôleur frontal
*
* @uses Singleton
* @uses Trait
* @uses methode magique __clone
*
* @author juliencharpentier
*/
class Front
{
/**
* Utilisation d'un trait permettant la gestion de la requête
*/
use Request\AwareTrait;
/**
* Utilisation d'un trait permettant la gestion de la réponse
*/
use Response\AwareTrait;
/**
* Routeur
*
* @var Router
*/
protected $_router = null;
/**
* Distributeur
*
* @var Dispatcher
*/
protected $_dispatcher = null;
/**
* Tableau des paramètres propagés dans le MVC
*
* @var array
*/
protected $_mvcParams = array();
/**
* Ajoute ou modifie un paramètre
*
* @param string $name
* @param mixed $value
*
* @return mixed objet utilisant le trait
*/
public function setParam($name, $value)
{
$name = (string) $name;
$this->_mvcParams[$name] = $value;
return $this;
}
/**
* Ajout des paramètres
*
* @param array $parametres
*
* @return mixed objet utilisant le trait
*/
public function setParams(array $parametres)
{
$this->_mvcParams = array_merge($this->_mvcParams, $parametres);
return $this;
}
/**
* Récupère un paramètre
*
* @param string $name
*
* @return mixed valeur du parametre ou NULL
*/
public function getParam($name)
{
if (isset($this->_mvcParams[$name])) {
return $this->_mvcParams[$name];
}
return null;
}
/**
* Récupère tous les paramètres
*
* @return array
*/
public function getParams()
{
return $this->_mvcParams;
}
/**
* Distribue la requête HTTP à un couple controleur/action
*
* @return Response
*/
public function run()
{
/*
* Initialise les composants
*/
//---- initialise l'objet requête
$this->getRequest(true)
->setBaseUrl(\Mvc\Application::getBaseUrl());
//---- initialise l'objet routeur
$this->_router = new Router();
//---- initialise l'objet réponse
$this->getResponse(true);
//---- initialise l'objet distributeur
$this->_dispatcher = new Dispatcher();
$this->_dispatcher->setResponse($this->_response);
/*
* Distribue
*/
//---- effectue le routage
$this->_router->route($this->_request);
try {
//---- distribue la requête
$this->_dispatcher->dispatch($this->_request, $this->_response);
} catch (Exception $e) {
echo $e;
}
//---- envoi la réponse HTTP
$this->_response->send();
}
}