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
*
* @return nomRetour<typeRetour> 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 <String>
$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;

View File

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

View File

@ -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/'); });

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
@ -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
*
* @return path<Array> 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<Array> Retourne les donnees de la requete
*
*/
public function getData(){
private function getData(){
return $this->data;
}

View File

@ -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); }

View File

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