From cda7389c013bbc49dc6d6e09e2df23e0475ac1aa Mon Sep 17 00:00:00 2001 From: xdrm-brackets Date: Thu, 4 Feb 2016 20:21:01 +0100 Subject: [PATCH] ModuleDispatcher supprime -> la methode dispatch() est dans la classe ModuleRequest pour simplifier l'utilisation --- automate.php | 41 +++++++++++++++--- config/modules.json | 4 +- index.php | 2 +- manager/ModuleDispatcher.php | 60 -------------------------- manager/ModuleRequest.php | 79 +++++++++++++++++++++------------- manager/module/firstModule.php | 17 ++++++-- todo.md | 1 - 7 files changed, 98 insertions(+), 106 deletions(-) delete mode 100644 manager/ModuleDispatcher.php diff --git a/automate.php b/automate.php index 5c5ed16..3235356 100644 --- a/automate.php +++ b/automate.php @@ -62,6 +62,35 @@ + + + /* AFFICHAGE DES UTILISATEURS DE LA BDD + * + * + * @return status TRUE si aucune erreur, sinon FALSE + * + */ + function selectUsers(){ + + // Creation de la requete + $requete = new manager\ModuleRequest('firstModule/getUsers'); + + var_dump( $requete->dispatch() ); + + + var_dump( $users ); + + return true; + + }//selectUsers(); + + + + + + + + /* TEST DU DISPATCHER DES MANAGERS * * @return nomRetour Description du retour @@ -69,14 +98,12 @@ */ function testModuleDispatcher(){ - $req1 = new manager\ModuleRequest('firstModule/returnvar', array('id_user' => 10) ); - $req2 = manager\ModuleRequest::fromString('{"path": "firstModule/a", "data": [{"id_user":10}]}'); + // Creation d'une requete en objet + $req1 = new manager\ModuleRequest('firstModule/printvar', array('id_user' => 10, 'code' => '11-22-33-44') ); + // Creation d'une requete a partir d'un json en + $req2 = manager\ModuleRequest::fromString('{"path": "firstModule/returnvar", "data": {"id_user":10, "code":"11-22-33-44"}}'); - - - - $instance = new manager\ModuleDispatcher($req1); - var_dump( $instance ); + var_dump( $req2->dispatch() ); return true; diff --git a/config/modules.json b/config/modules.json index 48b5a1f..7cb8a81 100755 --- a/config/modules.json +++ b/config/modules.json @@ -1,8 +1,6 @@ { "firstModule" : [ - "a", - "b", - "c", + "getUsers", "returnvar", "printvar" ], diff --git a/index.php b/index.php index 5bd46f9..f80ab36 100755 --- a/index.php +++ b/index.php @@ -43,7 +43,7 @@ // $R->get('settings/', function(){ include __ROOT__.'/view.php'; }); // Dispatcher - $R->get('f(?:/([\w-]+))*/?', function(){ new manager\ResourcesDispatcher($_GET['url']); }); + $R->get('f(?:/([\w-]+))*/?', function(){ new \manager\ResourcesDispatcher($_GET['url']); }); // N'importe -> page d'accueil $R->get('.+', function(){ header('Location: /dashboard/'); }); diff --git a/manager/ModuleDispatcher.php b/manager/ModuleDispatcher.php deleted file mode 100644 index fddd406..0000000 --- a/manager/ModuleDispatcher.php +++ /dev/null @@ -1,60 +0,0 @@ - La requete a dispatcher de type - * - * @return status Retourne si oui ou non tout s'est bien passe - * - */ - public function __construct($request){ - /* [1] On verifie le type de la requete - =========================================================*/ - if( !($request instanceof ModuleRequest) ) // Si c'est pas une instance de - return false; // On retourne FALSE, si erreur - - /* [2] Execution de la methode specifiee - =========================================================*/ - try{ - $result = call_user_func_array($request->getFunctionCaller(), $request->getData() ); - - var_dump('result = '.$result); - - // Si erreur, on retourne une exception - }catch(Exception $e){ - var_dump('erreur de fonction'); - return false; - } - - - return true; - - } - - - - } - -?> \ No newline at end of file diff --git a/manager/ModuleRequest.php b/manager/ModuleRequest.php index 66c9312..61ea372 100644 --- a/manager/ModuleRequest.php +++ b/manager/ModuleRequest.php @@ -78,6 +78,51 @@ + public function dispatch(){ + try{ + $result = call_user_func_array($this->getFunctionCaller(), $this->getData() ); + + return $result; + + // Si erreur, on retourne un code erreur + }catch(Exception $e){ + var_dump('erreur de fonction'); + return 'ERROR'; + } + } + + + + + + + /* DESERIALISATION ET CREATION D'UN OBJET + * + * @jsonString Json au format string contenant les donnees + * + * @return instance Retourne un objet de type + * + */ + public static function fromString($jsonString){ + $json = json_decode( $jsonString, true ); + + // Verification du parsage + if( $json == null ) + return new ModuleRequest(); + + // Verification des parametres + if( !isset($json['path']) ) + return new ModuleRequest(); + + // On definit $data au cas ou il soit vide + $data = (isset($json['data'])) ? $json['data'] : array(); + + return new ModuleRequest($json['path'], $data); + } + + + + /* VERIFICATION DU FORMAT ET DE LA COHERENCE DU CHEMIN SPECIFIE @@ -124,41 +169,13 @@ - /* DESERIALISATION ET CREATION D'UN OBJET - * - * @jsonString Json au format string contenant les donnees - * - * @return instance Retourne un objet de type - * - */ - public static function fromString($jsonString){ - $json = json_decode( $jsonString, true ); - - // Verification du parsage - if( $json == null ) - return new ModuleRequest(); - - // Verification des parametres - if( !isset($json['path']) ) - return new ModuleRequest(); - - // On definit $data au cas ou il soit vide - $data = (isset($json['data'])) ? $json['data'] : array(); - - return new ModuleRequest($json['path'], $data); - } - - - - - /* RENVOI LE CHEMIN D'AMORCAGE DE LA METHODE * * @return path Retourne le chemin d'amorcage de la requete * */ - public function getFunctionCaller(){ - return 'manager\\module\\'.$this->path['module'].'::'.$this->path['method']; + private function getFunctionCaller(){ + return '\\manager\\module\\'.$this->path['module'].'::'.$this->path['method']; } /* RENVOI LES DONNEES @@ -166,7 +183,7 @@ * @return data Retourne les donnees de la requete * */ - public function getData(){ + private function getData(){ return $this->data; } diff --git a/manager/module/firstModule.php b/manager/module/firstModule.php index b5d496a..22bacaa 100644 --- a/manager/module/firstModule.php +++ b/manager/module/firstModule.php @@ -5,9 +5,20 @@ class firstModule{ - public static function a(){ var_dump('a method'); } - public static function b(){ var_dump('b method'); } - public static function c(){ var_dump('c method'); } + public static function getUsers(){ + return \manager\Database::getPDO()->query("SELECT * FROM user ORDER BY id_user")->fetchAll(); + } + + + + + + + + + + + public static function returnvar($var){ var_dump('return var'); return $var; } public static function printvar($var){ var_dump('var = '); var_dump($var); } diff --git a/todo.md b/todo.md index 355c308..784d52c 100755 --- a/todo.md +++ b/todo.md @@ -14,7 +14,6 @@ # EN COURS # ############ - [ ] Conception du systeme de delegation des managers - - [x] Module Dispatcher - [x] Module Request - [ ] Module Answer