- [ ] Conception du systeme de delegation des managers
- [x] Module Request - [x] Gestion des erreurs - [x] ResourcesDispatcher - [x] ModuleRequest
This commit is contained in:
parent
733350f185
commit
f7462b406d
13
automate.php
13
automate.php
|
@ -75,14 +75,13 @@
|
||||||
// Creation de la requete
|
// Creation de la requete
|
||||||
$requete = new manager\ModuleRequest('firstModule/getUsers');
|
$requete = new manager\ModuleRequest('firstModule/getUsers');
|
||||||
|
|
||||||
|
|
||||||
var_dump( $requete->dispatch() );
|
var_dump( $requete->dispatch() );
|
||||||
|
// var_dump($requete->error);
|
||||||
|
|
||||||
var_dump( $users );
|
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
|
|
||||||
}//selectUsers();
|
}selectUsers();
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@ -99,15 +98,15 @@
|
||||||
function testModuleDispatcher(){
|
function testModuleDispatcher(){
|
||||||
|
|
||||||
// Creation d'une requete en objet
|
// Creation d'une requete en objet
|
||||||
$req1 = new manager\ModuleRequest('firstModule/printvar', array('id_user' => 10, 'code' => '11-22-33-44') );
|
$req1 = new manager\ModuleRequest('firstModule/returnvar', array('id_user' => 10, 'code' => '11-22-33-44') );
|
||||||
// Creation d'une requete a partir d'un json en <String>
|
// 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"}}');
|
$req2 = manager\ModuleRequest::fromString('{"path": "firstModule/returnvar", "data": {"id_user":10, "code":"11-22-33-44"}}');
|
||||||
|
|
||||||
var_dump( $req2->dispatch() );
|
var_dump( $req1->dispatch() );
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
|
|
||||||
}testModuleDispatcher();
|
}//testModuleDispatcher();
|
||||||
|
|
||||||
|
|
||||||
?>
|
?>
|
|
@ -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\ResourceDispatcher($_GET['url']); });
|
||||||
|
|
||||||
// N'importe -> page d'accueil
|
// N'importe -> page d'accueil
|
||||||
$R->get('.+', function(){ header('Location: /dashboard/'); });
|
$R->get('.+', function(){ header('Location: /dashboard/'); });
|
||||||
|
|
|
@ -5,15 +5,18 @@
|
||||||
|
|
||||||
class DataBase{
|
class DataBase{
|
||||||
|
|
||||||
|
/* ATTRIBUTS STATIQUES */
|
||||||
|
public static $config_path = '/f/json/database/conf';
|
||||||
|
private static $pdo;
|
||||||
|
private static $instance;
|
||||||
|
|
||||||
|
|
||||||
/* ATTRIBUTS */
|
/* ATTRIBUTS */
|
||||||
private $host;
|
private $host;
|
||||||
private $dbname;
|
private $dbname;
|
||||||
private $username;
|
private $username;
|
||||||
private $password;
|
private $password;
|
||||||
|
|
||||||
private static $pdo;
|
|
||||||
|
|
||||||
private static $instance;
|
|
||||||
|
|
||||||
public function __construct($host, $dbname, $username, $password){
|
public function __construct($host, $dbname, $username, $password){
|
||||||
$this->host = $host;
|
$this->host = $host;
|
||||||
|
@ -31,7 +34,9 @@
|
||||||
if( self::$instance == null ){
|
if( self::$instance == null ){
|
||||||
|
|
||||||
// chargement de la configuration du server SQL
|
// chargement de la configuration du server SQL
|
||||||
$conf = json_decode(file_get_contents('http://'.$_SERVER['HTTP_HOST'].'/f/json/database/conf'), true);
|
$conf = json_decode( ResourceDispatcher::getResource(self::$config_path), true );
|
||||||
|
|
||||||
|
// creation de l'instance en fonction des parametres
|
||||||
self::$instance = new DataBase($conf['host'], $conf['dbname'], $conf['user'], $conf['password']);
|
self::$instance = new DataBase($conf['host'], $conf['dbname'], $conf['user'], $conf['password']);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,46 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
|
||||||
|
namespace manager;
|
||||||
|
|
||||||
|
|
||||||
|
abstract class ManagerError{
|
||||||
|
|
||||||
|
/* SUCCESS */
|
||||||
|
const Success = 0;
|
||||||
|
|
||||||
|
/* Parsage json */
|
||||||
|
const ParsingFailed = 1;
|
||||||
|
|
||||||
|
/* ResourceDispatcher */
|
||||||
|
|
||||||
|
// Drapeaux invalides
|
||||||
|
const InvalidFlags = 2;
|
||||||
|
|
||||||
|
// Fichier inexistant
|
||||||
|
const FileNotFound = 3;
|
||||||
|
|
||||||
|
|
||||||
|
/* ModuleRequest */
|
||||||
|
|
||||||
|
// Le @path n'est pas renseigne
|
||||||
|
const MissingPath = 4;
|
||||||
|
|
||||||
|
// Le @path n'est pas du bon type
|
||||||
|
const WrongPathType = 5;
|
||||||
|
|
||||||
|
// Verification de la coherence du chemin (existe dans la conf)
|
||||||
|
const WrongPath = 6;
|
||||||
|
|
||||||
|
// Module non specifie dans la conf
|
||||||
|
const UnknownModule = 7;
|
||||||
|
|
||||||
|
// Methode non specifie pour ce Module dans la conf
|
||||||
|
const UnknownMethod = 8;
|
||||||
|
|
||||||
|
// Methode inamorcable
|
||||||
|
const UncallableMethod = 9;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
?>
|
|
@ -23,6 +23,7 @@
|
||||||
// Attributs prives utiles (initialisation)
|
// Attributs prives utiles (initialisation)
|
||||||
private $path;
|
private $path;
|
||||||
private $data;
|
private $data;
|
||||||
|
public $error;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@ -39,23 +40,31 @@
|
||||||
*/
|
*/
|
||||||
public function __construct($path=null, $data=null){
|
public function __construct($path=null, $data=null){
|
||||||
// Si pas parametre manquant, on quitte
|
// Si pas parametre manquant, on quitte
|
||||||
if( $path == null ) return false;
|
if( $path == null ){
|
||||||
|
$this->error = ManagerError::MissingPath;
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
/* [0] On met a jour la configuration
|
/* [0] On met a jour la configuration
|
||||||
=========================================================*/
|
=========================================================*/
|
||||||
// Modules specifies
|
// Modules specifies
|
||||||
$this->modules = json_decode( ResourcesDispatcher::getResource(self::$config_path), true );
|
$this->modules = json_decode( ResourceDispatcher::getResource(self::$config_path), true );
|
||||||
|
|
||||||
// Gestion de l'erreur de parsage
|
// Gestion de l'erreur de parsage
|
||||||
if( $this->modules == null ) return false;
|
if( $this->modules == null ){
|
||||||
|
$this->error = ManagerError::ParsingFailed;
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/* [1] Verification des types des parametres
|
/* [1] Verification des types des parametres
|
||||||
=========================================================*/
|
=========================================================*/
|
||||||
// Type de @path
|
// Type de @path
|
||||||
if( !is_string($path) ) // Si le type est incorrect
|
if( !is_string($path) ){ // Si le type est incorrect
|
||||||
|
$this->error = ManagerError::WrongPathType;
|
||||||
return false; // On retourne FALSE, si erreur
|
return false; // On retourne FALSE, si erreur
|
||||||
|
}
|
||||||
|
|
||||||
// Type de @data (optionnel)
|
// Type de @data (optionnel)
|
||||||
$data = (is_array($data)) ? $data : array();
|
$data = (is_array($data)) ? $data : array();
|
||||||
|
@ -64,13 +73,14 @@
|
||||||
/* [2] Verification du chemin (existence module+methode)
|
/* [2] Verification du chemin (existence module+methode)
|
||||||
=========================================================*/
|
=========================================================*/
|
||||||
if( !$this->checkPath($path) ) // Verification de la coherence du chemin + attribution
|
if( !$this->checkPath($path) ) // Verification de la coherence du chemin + attribution
|
||||||
return false; // On retourne FALSE, si erreur
|
return false;
|
||||||
|
// Gestion d'erreur interne
|
||||||
|
|
||||||
|
|
||||||
/* [3] Construction de l'objet
|
/* [3] Construction de l'objet
|
||||||
=========================================================*/
|
=========================================================*/
|
||||||
$this->data = $data;
|
$this->data = $data;
|
||||||
|
$this->error = ManagerError::Success;
|
||||||
|
|
||||||
return true; // On retourne que tout s'est bien passe
|
return true; // On retourne que tout s'est bien passe
|
||||||
|
|
||||||
|
@ -79,16 +89,24 @@
|
||||||
|
|
||||||
|
|
||||||
public function dispatch(){
|
public function dispatch(){
|
||||||
try{
|
/* [1] On verifie qu'aucune erreur n'a ete signalee
|
||||||
$result = call_user_func_array($this->getFunctionCaller(), $this->getData() );
|
=========================================================*/
|
||||||
|
if( $this->error != ManagerError::Success ) return false;
|
||||||
|
|
||||||
return $result;
|
|
||||||
|
|
||||||
// Si erreur, on retourne un code erreur
|
/* [2] On verifie que la methode est amorcable
|
||||||
}catch(Exception $e){
|
=========================================================*/
|
||||||
var_dump('erreur de fonction');
|
if( !is_callable($this->getFunctionCaller()) ){
|
||||||
return 'ERROR';
|
$this->error = ManagerError::UncallableMethod;
|
||||||
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/* [3] On amorce la methode
|
||||||
|
=========================================================*/
|
||||||
|
$returned = call_user_func_array( $this->getFunctionCaller(), $this->getData() );
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -135,8 +153,10 @@
|
||||||
private function checkPath($path){
|
private function checkPath($path){
|
||||||
/* [1] Verification format general
|
/* [1] Verification format general
|
||||||
=========================================================*/
|
=========================================================*/
|
||||||
if( !preg_match('#^([\w_-]+)/([\w_-]+)$#i', $path, $matches) ) // Si mauvais format
|
if( !preg_match('#^([\w_-]+)/([\w_-]+)$#i', $path, $matches) ){ // Si mauvais format
|
||||||
|
$this->error = ManagerError::WrongPathType;
|
||||||
return false;
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
// On recupere les donnes de la regex
|
// On recupere les donnes de la regex
|
||||||
$module = $matches[1];
|
$module = $matches[1];
|
||||||
|
@ -144,14 +164,17 @@
|
||||||
|
|
||||||
/* [2] Verification de l'existence du module (conf)
|
/* [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
|
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
|
return false; // On retourne FALSE, si erreur
|
||||||
|
}
|
||||||
|
|
||||||
/* [3] Verification de l'existence de la methode (conf)
|
/* [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
|
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
|
return false; // On retourne FALSE, si erreur
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -3,7 +3,7 @@
|
||||||
namespace manager;
|
namespace manager;
|
||||||
|
|
||||||
|
|
||||||
class ResourcesDispatcher{
|
class ResourceDispatcher{
|
||||||
|
|
||||||
// Constantes
|
// Constantes
|
||||||
public static $extension_config_path = '/config/dispatcher-extensions.json';
|
public static $extension_config_path = '/config/dispatcher-extensions.json';
|
||||||
|
@ -16,6 +16,7 @@
|
||||||
private $header;
|
private $header;
|
||||||
private $path;
|
private $path;
|
||||||
private $flags;
|
private $flags;
|
||||||
|
public $error;
|
||||||
|
|
||||||
|
|
||||||
/* CONSTRUCTEUR & AMORCAGE DU DISPATCHER
|
/* CONSTRUCTEUR & AMORCAGE DU DISPATCHER
|
||||||
|
@ -32,7 +33,10 @@
|
||||||
$extensions_conf = json_decode( file_get_contents('http://'.$_SERVER['HTTP_HOST'].self::$extension_config_path), true );
|
$extensions_conf = json_decode( file_get_contents('http://'.$_SERVER['HTTP_HOST'].self::$extension_config_path), true );
|
||||||
|
|
||||||
// Gestion de l'erreur de parsage
|
// Gestion de l'erreur de parsage
|
||||||
if( $extensions_conf == null ) return false;
|
if( $extensions_conf == null ){
|
||||||
|
$this->error = ManagerError::ParsingFailed;
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
self::$supported_extensions = $extensions_conf;
|
self::$supported_extensions = $extensions_conf;
|
||||||
|
|
||||||
|
@ -40,7 +44,10 @@
|
||||||
$parents_conf = json_decode( file_get_contents('http://'.$_SERVER['HTTP_HOST'].self::$parents_config_path), true );
|
$parents_conf = json_decode( file_get_contents('http://'.$_SERVER['HTTP_HOST'].self::$parents_config_path), true );
|
||||||
|
|
||||||
// Gestion de l'erreur de parsage
|
// Gestion de l'erreur de parsage
|
||||||
if( $parents_conf == null ) return false;
|
if( $parents_conf == null ){
|
||||||
|
$this->error = ManagerError::ParsingFailed;
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
self::$supported_parents = $parents_conf;
|
self::$supported_parents = $parents_conf;
|
||||||
|
|
||||||
|
@ -52,20 +59,24 @@
|
||||||
|
|
||||||
/* [2] On check/cree les drapeaux avec ces donnees
|
/* [2] On check/cree les drapeaux avec ces donnees
|
||||||
==================================================*/
|
==================================================*/
|
||||||
if( !$this->createFlags($serialFlags) ) // Creation des drapeaux
|
if( !$this->createFlags($serialFlags) ){ // Creation des drapeaux
|
||||||
return false; // On retourne FALSE, si erreur
|
$this->error = ManagerError::InvalidFlags;
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/* [3] On construit le chemin a partir des tags
|
/* [3] On construit le chemin a partir des tags
|
||||||
==================================================*/
|
==================================================*/
|
||||||
if( !$this->buildPath() ) // Construction du chemin
|
if( !$this->buildPath() ){ // Construction du chemin
|
||||||
return false; // On retourne FALSE, si erreur
|
$this->error = ManagerError::FileNotFound;
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
/* [4] On gere l'affichage pour l'appel externe
|
/* [4] On gere l'affichage pour l'appel externe
|
||||||
==================================================*/
|
==================================================*/
|
||||||
$this->view();
|
$this->view();
|
||||||
|
|
||||||
|
$this->error = ManagerError::Success;
|
||||||
return true;
|
return true;
|
||||||
|
|
||||||
}
|
}
|
|
@ -19,8 +19,16 @@
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
public static function returnvar($var){ var_dump('return var'); return $var; }
|
public static function returnvar($var){
|
||||||
public static function printvar($var){ var_dump('var = '); var_dump($var); }
|
var_dump('return var'); return $var;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public static function printvar($var){
|
||||||
|
var_dump('var = '); var_dump($var);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
3
todo.md
3
todo.md
|
@ -34,6 +34,9 @@
|
||||||
########
|
########
|
||||||
# FAIT #
|
# FAIT #
|
||||||
########
|
########
|
||||||
|
- [x] Gestion des erreurs
|
||||||
|
- [x] ResourcesDispatcher
|
||||||
|
- [x] ModuleRequest
|
||||||
- [x] Gestion JS/PHP de la navigation
|
- [x] Gestion JS/PHP de la navigation
|
||||||
- [x] Gestion de l'affichage des pages en fonction du sous-menu
|
- [x] Gestion de l'affichage des pages en fonction du sous-menu
|
||||||
- [x] Correction de la navigation
|
- [x] Correction de la navigation
|
||||||
|
|
Loading…
Reference in New Issue