-
Notifications
You must be signed in to change notification settings - Fork 0
/
route.php
42 lines (38 loc) · 1.52 KB
/
route.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
<?php
require_once './classes/ConfigApp.class.php';
require_once './classes/ToDoError.class.php';
require_once './classes/ToDoView.class.php';
require_once './classes/ToDoModel.class.php';
require_once './classes/ToDoController.class.php';
/**
* Función que se encarga de gestionar las peticiones de la aplicación
*
* @param string $url La url a la que se desea acceder
* @return array Array con los datos de la acción a ejecutar y los parámetros
*/
function url_parse(string $url): array
{
$url_data = explode('/', $url);
$data_array[ConfigApp::$ACTION] = $url_data[0];
$data_array[ConfigApp::$PARAMS] = isset($url_data[1]) ? array_slice($url_data, 1) : null;
return $data_array;
}
$url_data = url_parse($_GET[ConfigApp::$ACTION]);
$action_name = $url_data[ConfigApp::$ACTION];
// Si hay una acción a ejecutar y es válida, se ejecuta
if (array_key_exists($action_name, ConfigApp::$ACTIONS)) {
$params = $url_data[ConfigApp::$PARAMS];
$handler = explode('#', ConfigApp::$ACTIONS[$action_name]);
$controller = new $handler[0];
$method_name = $handler[1];
// Si hay parámetros, se los pasa al método
if (isset($params) && $params !== null) {
echo $controller->$method_name($params);
} else { // Sino se ejecuta el método sin parámetros
echo $controller->$method_name();
}
} else { // Sino se muestra la página de error
// Mostrar Error 404 (Página no encontrada)
$error = new ToDoError('La página a la que quiere acceder no existe', 404);
$error->show_error();
}