1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37
| public function __run(array $config) {
$this->config = json_decode(json_encode($config));
// Définition du header et langage de sortie pour la fonction display
$this->config->output = isset($this->config->output) && trim($this->config->output) != '' ? $this->config->output : 'json';
// Test de la validité du nom de l'API
if(preg_match("#^[[:alnum:]]{3,9}$#",$this->config->appname)) {
$appName = $this->config->appname;
} else { $this->display(array('error' => array('id' => '0x02', 'msg' => 'Invalid API name')),$this->config->output); return false; }
// Test de l'existence du dossier de l'API
if(is_dir(dirname(__FILE__).'/api/'.$appName) && $appName != 'Model') {
// Test de l'existence du fichier de la classe de base de l'API
if(file_exists(dirname(__FILE__).'/api/'.$appName.'/'.$appName.'.php')) {
// Appel du fichier de la classe
require_once dirname(__FILE__).'/api/'.$appName.'/'.$appName.'.php';
// Test de la possibilité d'instancier l'API
$reflectionClass = new ReflectionClass($appName);
if($reflectionClass->IsInstantiable()) {
// Instanciation de la classe
$api = new $appName;
// Test de l'instance de l'API (doit être runnable)
if($api instanceof runnable) {
// Démarrage de l'API
$api->run($this);
// if $api->config->licence_required === true (Identification de la licence pour l'API)
// Définition du langage de sortie
$output = in_array($this->config->output, $api->config->outputs) ? $this->config->output : 'json';
// Affichage du résultat
$this->display($api->data, $output);
} else { $this->display(array('error' => array('id' => '0x06', 'msg' => 'API is not runnable')),$this->config->output); }
} else { $this->display(array('error' => array('id' => '0x05', 'msg' => 'API is not recognized')),$this->config->output); }
} else { $this->display(array('error' => array('id' => '0x04', 'msg' => 'Missing API')),$this->config->output); }
} else { $this->display(array('error' => array('id' => '0x03', 'msg' => 'Unknown API')),$this->config->output); }
return false;
} |
Partager