From 0020ba4873c9cea0472bdbd760f05c24dc2f7fa9 Mon Sep 17 00:00:00 2001 From: "Albert E. Hidalgo Taveras" Date: Wed, 20 Feb 2019 15:38:35 -0400 Subject: [PATCH] Mejoras - Se mejoro el router para que el projecto funcione en subdirectorios de la raiz del servidor donde se encuentre alojado *La principal ventaja de esto es que es posible crear api rest versionadas con el directorio 'v1' tal y como lo establecen los estandares --- .idea/workspace.xml | 88 +++++++++++++++++++------------ Controllers/DefaultController.php | 4 +- router.php | 17 +++++- 3 files changed, 70 insertions(+), 39 deletions(-) diff --git a/.idea/workspace.xml b/.idea/workspace.xml index 10c59a1..17efa97 100644 --- a/.idea/workspace.xml +++ b/.idea/workspace.xml @@ -3,7 +3,8 @@ - + + - + @@ -370,11 +385,13 @@ + + - @@ -387,19 +404,20 @@ + - + - + - + @@ -634,13 +652,6 @@ - - - - - - - @@ -655,13 +666,6 @@ - - - - - - - @@ -690,13 +694,6 @@ - - - - - - - @@ -725,12 +722,33 @@ + + + + + + + - + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Controllers/DefaultController.php b/Controllers/DefaultController.php index 41dc5b2..e0d4cd8 100644 --- a/Controllers/DefaultController.php +++ b/Controllers/DefaultController.php @@ -19,9 +19,9 @@ class DefaultController extends Controller public function index() { $data['framework_name'] = "Ligne Framework"; - $data['version'] = "v1.3"; + $data['version'] = "v1.4"; $data['environment'] = "Dev"; - $data['date'] = "Oct 2018"; + $data['date'] = "Feb 2019"; $data['external_components_included'] = "HttpFoundation"; $data['autor'] = "Albert Eduardo Hidalgo Taveras"; $this->setData($data); //envia datos a la vista diff --git a/router.php b/router.php index 2d8c6bb..2b5c1f2 100644 --- a/router.php +++ b/router.php @@ -17,11 +17,24 @@ **/ class Router { + /** + * Las variables @projectDir y @offSet se incluyeron en la actualizacion del 20/02/2019 para + * que el framework pueda estar en cualquier directorio o subdirectorio del servidor + * + * Esto analiza en que nivel de la URLI estan el contorlador, la accion y los parametros + * + * @param $url + * @param $request + */ static public function parse($url, $request){ $url = strtok(trim($url),'?'); $explode_url = explode('/', $url); - $explode_url = array_slice($explode_url, 2); - if ($url == '/' . self::root_dir() . '/' ) + + $projectDir = explode('/',ROOT); + $offSet = count($projectDir)-3; + + $explode_url = array_slice($explode_url, $offSet); + if ($url == '/' . self::root_dir() . '/' || strlen($explode_url[0]) == 0 ) self::load_index($request); elseif(self::is_array_url_valid($explode_url)) self::route_construct($request,$explode_url);