- [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
|
// Creation de la requete
|
||||||
$requete = new manager\ModuleRequest('firstModule/getUsers');
|
$requete = new manager\ModuleRequest('firstModule/getUsers');
|
||||||
|
$answer = $requete->dispatch();
|
||||||
|
|
||||||
|
var_dump( $answer->serialize() );
|
||||||
var_dump( $requete->dispatch() );
|
|
||||||
// var_dump($requete->error);
|
// var_dump($requete->error);
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
|
|
||||||
}//selectUsers();
|
}selectUsers();
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@ -99,14 +99,19 @@
|
||||||
function displayUsers(){
|
function displayUsers(){
|
||||||
|
|
||||||
// Creation de la requete
|
// Creation de la requete
|
||||||
$requete = new \manager\ModuleRequest('firstModule/getUsers');
|
$request = new \manager\ModuleRequest('firstModule/getUsers');
|
||||||
$users = $requete->dispatch();
|
|
||||||
|
// Debug error
|
||||||
|
var_dump( $request->error );
|
||||||
|
var_dump( \manager\ManagerError::explicit($request->error) );
|
||||||
|
|
||||||
|
$users = $request->dispatch();
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
|
|
||||||
}displayUsers();
|
}//displayUsers();
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
16
index.php
16
index.php
|
@ -49,10 +49,18 @@
|
||||||
$request = \manager\ModuleRequest::fromURL($_POST);
|
$request = \manager\ModuleRequest::fromURL($_POST);
|
||||||
|
|
||||||
// Si requete correcte
|
// Si requete correcte
|
||||||
if( $request->error == \manager\ManagerError::Success )
|
if( $request->error == \manager\ManagerError::Success ){
|
||||||
var_dump( $request->dispatch() );
|
$answer = $request->dispatch();
|
||||||
else
|
$answer->append('ModuleError', false);
|
||||||
echo 'request error';
|
|
||||||
|
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
|
// N'importe -> page d'accueil
|
||||||
|
|
|
@ -29,29 +29,8 @@
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
public function __construct(){
|
public function __construct(){
|
||||||
|
$this->data = array();
|
||||||
}
|
$this->error = ManagerError::Success;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
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() );
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -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
|
* @key<String> Le nom de la valeur a ajouter
|
||||||
*
|
* @value<String> La valeur a ajouter
|
||||||
* @return instance<ModuleRequest> Retourne un objet de type <ModuleRequest>
|
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
public static function fromString($jsonString){
|
public function append($key, $value){
|
||||||
$json = json_decode( $jsonString, true );
|
// Ajoute une entree pour la cle @key et de valeur @value
|
||||||
|
$this->data[$key] = $value;
|
||||||
|
|
||||||
// Verification du parsage
|
return $this;
|
||||||
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);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -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)
|
* @dataset<Array> Le tableau associatif correspondant a la reponse
|
||||||
*
|
|
||||||
* @return instance<ModuleRequest> Retourne un objet de type <ModuleRequest>
|
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
public static function fromURL($post){
|
public function appendAll($dataset){
|
||||||
/* [1] On verifie que le @path est renseigne
|
// Ajoute une entree pour la cle @key et de valeur @value
|
||||||
=========================================================*/
|
$this->data = $dataset;
|
||||||
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);
|
|
||||||
|
|
||||||
|
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 json<String> Retourne les donnees serialisees
|
||||||
*
|
|
||||||
* @return validity<Boolean> Retourne si oui ou non l'objet est correct
|
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
private function checkPath($path){
|
public function serialize(){
|
||||||
/* [1] Verification format general
|
|
||||||
=========================================================*/
|
|
||||||
if( !preg_match('#^([\w_-]+)/([\w_-]+)$#i', $path, $matches) ){ // Si mauvais format
|
|
||||||
$this->error = ManagerError::WrongPathType;
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
// On recupere les donnes de la regex
|
return json_encode($this->data);
|
||||||
$module = $matches[1];
|
|
||||||
$method = $matches[2];
|
|
||||||
|
|
||||||
/* [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)
|
// Attributs prives utiles (initialisation)
|
||||||
private $path;
|
private $path;
|
||||||
private $data;
|
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(){
|
public function dispatch(){
|
||||||
/* [1] On verifie qu'aucune erreur n'a ete signalee
|
/* [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
|
/* [2] On verifie que la methode est amorcable
|
||||||
=========================================================*/
|
=========================================================*/
|
||||||
if( !is_callable($this->getFunctionCaller()) ){
|
if( !is_callable($this->getFunctionCaller()) ){
|
||||||
$this->error = ManagerError::UncallableMethod;
|
$this->error = ManagerError::UncallableMethod;
|
||||||
return false;
|
return new ModuleAnswer();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/* [3] On amorce la methode
|
/* [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'];
|
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(){
|
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] Gestion des erreurs
|
||||||
- [x] Explicitation
|
- [x] Explicitation
|
||||||
- [ ] Conception du systeme de delegation des managers
|
- [.] Conception du systeme de delegation des managers
|
||||||
- [x] Module Request
|
- [x] Module Request
|
||||||
- [x] Inline (en php)
|
- [x] Inline (en php)
|
||||||
- [x] Serialise (en json <String>)
|
- [x] Serialise (en json <String>)
|
||||||
- [x] Par url (POST)
|
- [x] Par url (POST)
|
||||||
- [ ] Module Answer
|
- [.] Module Answer
|
||||||
|
|
||||||
- [x] Conception BDD + ameliorations
|
- [x] Conception BDD + ameliorations
|
||||||
- [x] Liste des tables
|
- [x] Liste des tables
|
||||||
|
|
Loading…
Reference in New Issue