- [x] Gestion des erreurs
- [x] Explicitation - [.] Conception du systeme de delegation des managers - [x] Module Request - [x] Inline (en php) - [x] Serialise (en json <String>) - [x] Par url (POST) - [.] Module Answer
This commit is contained in:
parent
7b460332f2
commit
932b0ae0b3
17
automate.php
17
automate.php
|
@ -74,14 +74,14 @@
|
|||
|
||||
// Creation de la requete
|
||||
$requete = new manager\ModuleRequest('firstModule/getUsers');
|
||||
$answer = $requete->dispatch();
|
||||
|
||||
|
||||
var_dump( $requete->dispatch() );
|
||||
var_dump( $answer->serialize() );
|
||||
// var_dump($requete->error);
|
||||
|
||||
return true;
|
||||
|
||||
}//selectUsers();
|
||||
}selectUsers();
|
||||
|
||||
|
||||
|
||||
|
@ -99,14 +99,19 @@
|
|||
function displayUsers(){
|
||||
|
||||
// Creation de la requete
|
||||
$requete = new \manager\ModuleRequest('firstModule/getUsers');
|
||||
$users = $requete->dispatch();
|
||||
$request = new \manager\ModuleRequest('firstModule/getUsers');
|
||||
|
||||
// Debug error
|
||||
var_dump( $request->error );
|
||||
var_dump( \manager\ManagerError::explicit($request->error) );
|
||||
|
||||
$users = $request->dispatch();
|
||||
|
||||
|
||||
|
||||
return true;
|
||||
|
||||
}displayUsers();
|
||||
}//displayUsers();
|
||||
|
||||
|
||||
|
||||
|
|
16
index.php
16
index.php
|
@ -49,10 +49,18 @@
|
|||
$request = \manager\ModuleRequest::fromURL($_POST);
|
||||
|
||||
// Si requete correcte
|
||||
if( $request->error == \manager\ManagerError::Success )
|
||||
var_dump( $request->dispatch() );
|
||||
else
|
||||
echo 'request error';
|
||||
if( $request->error == \manager\ManagerError::Success ){
|
||||
$answer = $request->dispatch();
|
||||
$answer->append('ModuleError', false);
|
||||
|
||||
echo $answer->serialize(); // On renvoie la reponse
|
||||
|
||||
// Si requete erronee
|
||||
}else{
|
||||
$answer = new \manager\ModuleAnswer();
|
||||
$answer->append('ModuleError', true);
|
||||
echo $answer->serialize();
|
||||
}
|
||||
});
|
||||
|
||||
// N'importe -> page d'accueil
|
||||
|
|
|
@ -29,29 +29,8 @@
|
|||
*
|
||||
*/
|
||||
public function __construct(){
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
public function dispatch(){
|
||||
/* [1] On verifie qu'aucune erreur n'a ete signalee
|
||||
=========================================================*/
|
||||
if( $this->error != ManagerError::Success ) return false;
|
||||
|
||||
|
||||
/* [2] On verifie que la methode est amorcable
|
||||
=========================================================*/
|
||||
if( !is_callable($this->getFunctionCaller()) ){
|
||||
$this->error = ManagerError::UncallableMethod;
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
/* [3] On amorce la methode
|
||||
=========================================================*/
|
||||
return call_user_func_array( $this->getFunctionCaller(), $this->getData() );
|
||||
|
||||
$this->data = array();
|
||||
$this->error = ManagerError::Success;
|
||||
}
|
||||
|
||||
|
||||
|
@ -59,28 +38,18 @@
|
|||
|
||||
|
||||
|
||||
/* DESERIALISATION ET CREATION D'UN OBJET
|
||||
|
||||
/* AJOUTE UNE DONNEE A LA REPONSE
|
||||
*
|
||||
* @jsonString<String> Json au format string contenant les donnees
|
||||
*
|
||||
* @return instance<ModuleRequest> Retourne un objet de type <ModuleRequest>
|
||||
* @key<String> Le nom de la valeur a ajouter
|
||||
* @value<String> La valeur a ajouter
|
||||
*
|
||||
*/
|
||||
public static function fromString($jsonString){
|
||||
$json = json_decode( $jsonString, true );
|
||||
public function append($key, $value){
|
||||
// Ajoute une entree pour la cle @key et de valeur @value
|
||||
$this->data[$key] = $value;
|
||||
|
||||
// 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);
|
||||
return $this;
|
||||
}
|
||||
|
||||
|
||||
|
@ -88,28 +57,18 @@
|
|||
|
||||
|
||||
|
||||
/* DESERIALISATION A PARTIR DES DONNEES POST
|
||||
|
||||
|
||||
/* AJOUTE TOUTES LES DONNEES A LA REPONSE
|
||||
*
|
||||
* @post<Array> Tableau des donnes $_POST => @path + @data (opt)
|
||||
*
|
||||
* @return instance<ModuleRequest> Retourne un objet de type <ModuleRequest>
|
||||
* @dataset<Array> Le tableau associatif correspondant a la reponse
|
||||
*
|
||||
*/
|
||||
public static function fromURL($post){
|
||||
/* [1] On verifie que le @path est renseigne
|
||||
=========================================================*/
|
||||
if( !isset($post['path']) )
|
||||
return new ModuleRequest();
|
||||
|
||||
/* [2] On verifie que @data est renseigne
|
||||
=========================================================*/
|
||||
$data = (isset($post['data'])) ? $post['data'] : array();
|
||||
|
||||
|
||||
/* [3] On retourne une instance de <ModuleRequest>
|
||||
=========================================================*/
|
||||
return new ModuleRequest($post['path'], $data);
|
||||
public function appendAll($dataset){
|
||||
// Ajoute une entree pour la cle @key et de valeur @value
|
||||
$this->data = $dataset;
|
||||
|
||||
return $this;
|
||||
}
|
||||
|
||||
|
||||
|
@ -117,71 +76,15 @@
|
|||
|
||||
|
||||
|
||||
/* VERIFICATION DU FORMAT ET DE LA COHERENCE DU CHEMIN SPECIFIE
|
||||
/* SERIALISATION A PARTIR DES DONNEES
|
||||
*
|
||||
* @path<String> String correspondant au chemin de delegation ("module/methode")
|
||||
*
|
||||
* @return validity<Boolean> Retourne si oui ou non l'objet est correct
|
||||
* @return json<String> Retourne les donnees serialisees
|
||||
*
|
||||
*/
|
||||
private function checkPath($path){
|
||||
/* [1] Verification format general
|
||||
=========================================================*/
|
||||
if( !preg_match('#^([\w_-]+)/([\w_-]+)$#i', $path, $matches) ){ // Si mauvais format
|
||||
$this->error = ManagerError::WrongPathType;
|
||||
return false;
|
||||
}
|
||||
public function serialize(){
|
||||
|
||||
// On recupere les donnes de la regex
|
||||
$module = $matches[1];
|
||||
$method = $matches[2];
|
||||
return json_encode($this->data);
|
||||
|
||||
/* [2] Verification de l'existence du module (conf)
|
||||
=========================================================*/
|
||||
if( !array_key_exists($module, $this->modules) ){ // Si le module n'est pas specifie dans la conf
|
||||
$this->error = ManagerError::UnknownModule;
|
||||
return false; // On retourne FALSE, si erreur
|
||||
}
|
||||
|
||||
/* [3] Verification de l'existence de la methode (conf)
|
||||
=========================================================*/
|
||||
if( array_search($method, $this->modules[$module]) === false ){ // Si la methode n'est pas specifie dans la conf
|
||||
$this->error = ManagerError::UnknownMethod;
|
||||
return false; // On retourne FALSE, si erreur
|
||||
}
|
||||
|
||||
|
||||
|
||||
/* [4] Enregistrement du chemin et renvoi de SUCCESS
|
||||
=========================================================*/
|
||||
$this->path = array(
|
||||
'module' => $module,
|
||||
'method' => $method
|
||||
);
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
/* RENVOI LE CHEMIN D'AMORCAGE DE LA METHODE
|
||||
*
|
||||
* @return path<Array> Retourne le chemin d'amorcage de la requete
|
||||
*
|
||||
*/
|
||||
private function getFunctionCaller(){
|
||||
return '\\manager\\module\\'.$this->path['module'].'::'.$this->path['method'];
|
||||
}
|
||||
|
||||
/* RENVOI LES DONNEES
|
||||
*
|
||||
* @return data<Array> Retourne les donnees de la requete
|
||||
*
|
||||
*/
|
||||
private function getData(){
|
||||
return $this->data;
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -23,8 +23,12 @@
|
|||
// Attributs prives utiles (initialisation)
|
||||
private $path;
|
||||
private $data;
|
||||
public $error;
|
||||
|
||||
// Contiendra la reponse a la requete
|
||||
public $answer;
|
||||
|
||||
// Contiendra l'etat de la requete
|
||||
public $error;
|
||||
|
||||
|
||||
|
||||
|
@ -88,24 +92,36 @@
|
|||
|
||||
|
||||
|
||||
/* EXECUTE LE TRAITEMENT ASSOCIE ET REMPLIE LA REPONSE
|
||||
*
|
||||
* @return answer<ModuleAnswer> Retourne une reponse de type <ModuleAnswer> si tout s'est bien passe
|
||||
*
|
||||
*/
|
||||
public function dispatch(){
|
||||
/* [1] On verifie qu'aucune erreur n'a ete signalee
|
||||
=========================================================*/
|
||||
if( $this->error != ManagerError::Success ) return false;
|
||||
if( $this->error != ManagerError::Success ) return new ModuleAnswer();
|
||||
|
||||
|
||||
/* [2] On verifie que la methode est amorcable
|
||||
=========================================================*/
|
||||
if( !is_callable($this->getFunctionCaller()) ){
|
||||
$this->error = ManagerError::UncallableMethod;
|
||||
return false;
|
||||
return new ModuleAnswer();
|
||||
}
|
||||
|
||||
|
||||
/* [3] On amorce la methode
|
||||
=========================================================*/
|
||||
return call_user_func_array( $this->getFunctionCaller(), $this->getData() );
|
||||
$returned = call_user_func_array( $this->getFunctionCaller(), $this->data );
|
||||
|
||||
|
||||
/* [4] Gestion de la reponse
|
||||
=========================================================*/
|
||||
$answer = new ModuleAnswer();
|
||||
$answer->appendAll($returned);
|
||||
|
||||
return $answer;
|
||||
}
|
||||
|
||||
|
||||
|
@ -229,16 +245,6 @@
|
|||
return '\\manager\\module\\'.$this->path['module'].'::'.$this->path['method'];
|
||||
}
|
||||
|
||||
/* RENVOI LES DONNEES
|
||||
*
|
||||
* @return data<Array> Retourne les donnees de la requete
|
||||
*
|
||||
*/
|
||||
private function getData(){
|
||||
return $this->data;
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
|
|
@ -6,7 +6,9 @@
|
|||
|
||||
|
||||
public static function getAll(){
|
||||
return \manager\Database::getPDO()->query("SELECT * FROM user ORDER BY id_user")->fetchAll();
|
||||
return array(
|
||||
'users' => \manager\Database::getPDO()->query("SELECT * FROM user ORDER BY id_user")->fetchAll()
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
|
|
4
todo.md
4
todo.md
|
@ -15,12 +15,12 @@
|
|||
############
|
||||
- [x] Gestion des erreurs
|
||||
- [x] Explicitation
|
||||
- [ ] Conception du systeme de delegation des managers
|
||||
- [.] Conception du systeme de delegation des managers
|
||||
- [x] Module Request
|
||||
- [x] Inline (en php)
|
||||
- [x] Serialise (en json <String>)
|
||||
- [x] Par url (POST)
|
||||
- [ ] Module Answer
|
||||
- [.] Module Answer
|
||||
|
||||
- [x] Conception BDD + ameliorations
|
||||
- [x] Liste des tables
|
||||
|
|
Loading…
Reference in New Issue