From 6a2ded3c3ec476f00c778cf32981ec12171a47c8 Mon Sep 17 00:00:00 2001 From: Emmanuel ROY Date: Fri, 9 Aug 2019 09:48:21 +0200 Subject: [PATCH] ajout d'un registre pour les applications modulaires --- application/class/ModularRegister.php | 28 +++++ application/class/Url.php | 126 ++++++++++++----------- application/modules/setup/registre.model | 1 + 3 files changed, 95 insertions(+), 60 deletions(-) create mode 100644 application/class/ModularRegister.php create mode 100644 application/modules/setup/registre.model diff --git a/application/class/ModularRegister.php b/application/class/ModularRegister.php new file mode 100644 index 0000000..abe315b --- /dev/null +++ b/application/class/ModularRegister.php @@ -0,0 +1,28 @@ + $ligne) { + if (preg_match("#[ ]*([a-zA-Z-_+]*)[ ]*[:][ ]*([0-9a-zA-Z-_+ ']*[ ]*)#", $ligne, $matches)) { + $this->registry[$matches[1]] = $matches[2]; + $this->index[] = $matches[1]; + } + } + } + + public function getRegistre(){ + return $this->index; + } + + public function getIndex(){ + return $this->registry; + } +} \ No newline at end of file diff --git a/application/class/Url.php b/application/class/Url.php index e6883cc..95c2e89 100644 --- a/application/class/Url.php +++ b/application/class/Url.php @@ -5,74 +5,80 @@ namespace MVC\Classe; class Url { public $page; + public $registre; public function __construct(){ - $page = array(); - $page['name'] = 'accueil'; - $page['description'] = ""; - $page['params'] = array(); - $page['control'] = false; + $this->registre = new \MVC\Classe\ModularRegister(); - - - $url = parse_url($_SERVER['REQUEST_URI']); - $urlTrim = trim( $url['path'] , '/' ); - $urlParts = explode('/' , $urlTrim ); - - //print_r($urlParts); - if(isset($urlParts[0])) { - //Récupération du nom de la page - ($urlParts[0] == 'index' || $urlParts[0] == '') ? $page['name'] = 'accueil' : $page['name'] = $urlParts[0]; - //array_shift($urlParts); - unset($urlParts[0]); - }else{ + $page = array(); $page['name'] = 'accueil'; - } + $page['description'] = ""; + $page['params'] = array(); + $page['control'] = false; - if($page['name'] == 'control'){ - $page['control'] = true; - ($urlParts[1] == 'index' || $urlParts[1] == '' ) ? $page['name']='accueil' : $page['name']=$urlParts[1]; - //array_shift($urlParts); - unset($urlParts[1]); - } - //vérification du nombre de parametres: s'il n'existe pas autant de clé que - // de valeurs on sort de la fonction et on renvoie une page d'erreur. - $numParts = count($urlParts); - if ( $numParts%2 != 0 ) { - $page['name'] = 'error'; - $page['params'] = array(); - return $page; - }else if ( $numParts != 0 ){ - $values = array(); - $keys = array(); - foreach( $urlParts as $key => $value ){ - if($key%2 == 0) { - $values[] = $value; - } else { - $keys[] = $value; - } - } - if($page['control']){ - $page['params'] = array_combine($values, $keys); - }else { - $page['params'] = array_combine($keys, $values); + $url = parse_url($_SERVER['REQUEST_URI']); + $urlTrim = trim( $url['path'] , '/' ); + $urlParts = explode('/' , $urlTrim ); + + //print_r($urlParts); + if(isset($urlParts[0])) { + //Récupération du nom de la page + ($urlParts[0] == 'index' || $urlParts[0] == '') ? $page['name'] = 'accueil' : $page['name'] = $urlParts[0]; + //array_shift($urlParts); + unset($urlParts[0]); + }else{ + $page['name'] = 'accueil'; } - } - - //verification de l'existence de la page dans les controlleurs - if($page['control']){ - $pageFile = TRAITEMENT_PATH . DIRECTORY_SEPARATOR . $page['name'] . '.php'; - }else { - $pageFile = CONTROLLERS_PATH . DIRECTORY_SEPARATOR . $page['name'] . '.php'; - } - - if(!file_exists($pageFile)){ - $page['name'] = 'error'; - } - $this->page = $page; - } + + if($page['name'] == 'control'){ + $page['control'] = true; + ($urlParts[1] == 'index' || $urlParts[1] == '' ) ? $page['name']='accueil' : $page['name']=$urlParts[1]; + //array_shift($urlParts); + unset($urlParts[1]); + + } + + //vérification du nombre de parametres: s'il n'existe pas autant de clé que + // de valeurs on sort de la fonction et on renvoie une page d'erreur. + $numParts = count($urlParts); + if ( $numParts%2 != 0 ) { + if( !in_array($page['name'], $this->registre->getIndex()) ){ + $page['name'] = 'error'; + $page['params'] = array(); + return $page; + } + }else if ( $numParts != 0 ){ + $values = array(); + $keys = array(); + foreach( $urlParts as $key => $value ){ + if($key%2 == 0) { + $values[] = $value; + } else { + $keys[] = $value; + } + } + if($page['control']){ + $page['params'] = array_combine($values, $keys); + }else { + $page['params'] = array_combine($keys, $values); + } + } + + //verification de l'existence de la page dans les controlleurs + if($page['control']){ + $pageFile = TRAITEMENT_PATH . DIRECTORY_SEPARATOR . $page['name'] . '.php'; + }else { + $pageFile = CONTROLLERS_PATH . DIRECTORY_SEPARATOR . $page['name'] . '.php'; + } + + if(!file_exists($pageFile)){ + $page['name'] = 'error'; + } + $this->page = $page; + + } } diff --git a/application/modules/setup/registre.model b/application/modules/setup/registre.model new file mode 100644 index 0000000..e85019d --- /dev/null +++ b/application/modules/setup/registre.model @@ -0,0 +1 @@ +sf43:Application permetttant de tester l'intégration d'un module avec symfony4.3 \ No newline at end of file