2017-12-10 19:33:18 +00:00
|
|
|
<?php
|
|
|
|
|
|
|
|
/**************************
|
|
|
|
* API ModuleFactory *
|
|
|
|
* 08-12-2016 *
|
|
|
|
***************************
|
|
|
|
* Designed & Developed by *
|
|
|
|
* xdrm-brackets *
|
|
|
|
***************************
|
|
|
|
* https://xdrm.io/ *
|
|
|
|
**************************/
|
|
|
|
|
|
|
|
namespace api\core;
|
|
|
|
|
|
|
|
|
|
|
|
class ModuleFactory{
|
|
|
|
|
|
|
|
/* INSTANCIE UN MODULE
|
|
|
|
*
|
|
|
|
* @module<String> Nom du module
|
|
|
|
* @arguments<Array> [OPTIONNEL] Arguments à passer au constructeur
|
|
|
|
*
|
|
|
|
* @return instance<Module> Instance du module en question
|
|
|
|
*
|
|
|
|
*/
|
|
|
|
public static function getModule($module, $arguments=[]){
|
|
|
|
/* (1) On gère les arguments */
|
|
|
|
$arguments = is_array($arguments) ? $arguments : [];
|
|
|
|
|
2017-12-11 11:15:05 +00:00
|
|
|
/* (2) Exception: URI Racine */
|
|
|
|
if( $module == '/' )
|
|
|
|
$module = '/root';
|
2017-12-10 19:33:18 +00:00
|
|
|
|
2017-12-11 11:15:05 +00:00
|
|
|
/* (3) On transforme @module en namespace */
|
|
|
|
$module_ns = str_replace('/', '\\', $module);
|
2017-12-10 19:33:18 +00:00
|
|
|
|
2017-12-11 11:15:05 +00:00
|
|
|
/* (4) On vérifie que la classe existe */
|
|
|
|
if( !file_exists(__BUILD__."/api/module$module.php") )
|
2017-12-10 19:33:18 +00:00
|
|
|
return false;
|
|
|
|
|
2017-12-11 11:15:05 +00:00
|
|
|
/* (5) On récupère la classe */
|
|
|
|
$class_name = "\\api\\module$module_ns";
|
2017-12-10 19:33:18 +00:00
|
|
|
|
2017-12-11 11:15:05 +00:00
|
|
|
/* (6) On retourne une instance */
|
2017-12-10 19:33:18 +00:00
|
|
|
return new $class_name($arguments);
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|