ModuleDispatcher supprime -> la methode dispatch() est dans la classe ModuleRequest pour simplifier l'utilisation

This commit is contained in:
xdrm-brackets 2016-02-04 20:21:01 +01:00
parent c18370c36a
commit cda7389c01
7 changed files with 98 additions and 106 deletions

View File

@ -62,6 +62,35 @@
/* AFFICHAGE DES UTILISATEURS DE LA BDD
*
*
* @return status<Boolean> 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 /* TEST DU DISPATCHER DES MANAGERS
* *
* @return nomRetour<typeRetour> Description du retour * @return nomRetour<typeRetour> Description du retour
@ -69,14 +98,12 @@
*/ */
function testModuleDispatcher(){ function testModuleDispatcher(){
$req1 = new manager\ModuleRequest('firstModule/returnvar', array('id_user' => 10) ); // Creation d'une requete en objet
$req2 = manager\ModuleRequest::fromString('{"path": "firstModule/a", "data": [{"id_user":10}]}'); $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 <String>
$req2 = manager\ModuleRequest::fromString('{"path": "firstModule/returnvar", "data": {"id_user":10, "code":"11-22-33-44"}}');
var_dump( $req2->dispatch() );
$instance = new manager\ModuleDispatcher($req1);
var_dump( $instance );
return true; return true;

View File

@ -1,8 +1,6 @@
{ {
"firstModule" : [ "firstModule" : [
"a", "getUsers",
"b",
"c",
"returnvar", "returnvar",
"printvar" "printvar"
], ],

View File

@ -43,7 +43,7 @@
// $R->get('settings/', function(){ include __ROOT__.'/view.php'; }); // $R->get('settings/', function(){ include __ROOT__.'/view.php'; });
// Dispatcher // 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 // N'importe -> page d'accueil
$R->get('.+', function(){ header('Location: /dashboard/'); }); $R->get('.+', function(){ header('Location: /dashboard/'); });

View File

@ -1,60 +0,0 @@
<?php
namespace manager;
// FORMAT:
//
// path: "nomModule/nomMethode"
// data1: {donnee1}
// data2: {donnee2}
// ...
//
//
//
//
class ModuleDispatcher{
// Attributs prives utiles (initialisation)
private $modules;
private $flags;
/* CONSTRUCTEUR & AMORCAGE DU DISPATCHER
*
* @request<ModuleRequest> La requete a dispatcher de type <ModuleRequest>
*
* @return status<Boolean> 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 <ModuleRequest>
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;
}
}
?>

View File

@ -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<String> Json au format string contenant les donnees
*
* @return instance<ModuleRequest> Retourne un objet de type <ModuleRequest>
*
*/
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 /* VERIFICATION DU FORMAT ET DE LA COHERENCE DU CHEMIN SPECIFIE
@ -124,41 +169,13 @@
/* DESERIALISATION ET CREATION D'UN OBJET
*
* @jsonString<String> Json au format string contenant les donnees
*
* @return instance<ModuleRequest> Retourne un objet de type <ModuleRequest>
*
*/
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 /* RENVOI LE CHEMIN D'AMORCAGE DE LA METHODE
* *
* @return path<Array> Retourne le chemin d'amorcage de la requete * @return path<Array> Retourne le chemin d'amorcage de la requete
* *
*/ */
public function getFunctionCaller(){ private function getFunctionCaller(){
return 'manager\\module\\'.$this->path['module'].'::'.$this->path['method']; return '\\manager\\module\\'.$this->path['module'].'::'.$this->path['method'];
} }
/* RENVOI LES DONNEES /* RENVOI LES DONNEES
@ -166,7 +183,7 @@
* @return data<Array> Retourne les donnees de la requete * @return data<Array> Retourne les donnees de la requete
* *
*/ */
public function getData(){ private function getData(){
return $this->data; return $this->data;
} }

View File

@ -5,9 +5,20 @@
class firstModule{ class firstModule{
public static function a(){ var_dump('a method'); } public static function getUsers(){
public static function b(){ var_dump('b method'); } return \manager\Database::getPDO()->query("SELECT * FROM user ORDER BY id_user")->fetchAll();
public static function c(){ var_dump('c method'); } }
public static function returnvar($var){ var_dump('return var'); return $var; } public static function returnvar($var){ var_dump('return var'); return $var; }
public static function printvar($var){ var_dump('var = '); var_dump($var); } public static function printvar($var){ var_dump('var = '); var_dump($var); }

View File

@ -14,7 +14,6 @@
# EN COURS # # EN COURS #
############ ############
- [ ] Conception du systeme de delegation des managers - [ ] Conception du systeme de delegation des managers
- [x] Module Dispatcher
- [x] Module Request - [x] Module Request
- [ ] Module Answer - [ ] Module Answer