52 lines
1.2 KiB
PHP
52 lines
1.2 KiB
PHP
<?php
|
|
|
|
namespace api\core;
|
|
|
|
use \error\core\Error;
|
|
use \error\core\Err;
|
|
|
|
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] Vérification des arguments
|
|
=========================================================*/
|
|
/* (1) @module n'est pas une <string> */
|
|
if( !is_string($module) )
|
|
return new Error(Err::WrongParam);
|
|
|
|
/* (2) @arguments n'est pas un tableau */
|
|
if( !is_array($arguments) )
|
|
return new Error(Err::WrongParam);
|
|
|
|
|
|
/* [2] Gestion de la classe
|
|
=========================================================*/
|
|
/* (1) On vérifie que la classe existe */
|
|
if( !file_exists(__BUILD__."/api/module/$module.php") )
|
|
return new Error(Err::UncallableModule);
|
|
|
|
/* (2) On récupère la classe */
|
|
$class_name = "\\api\\module\\$module";
|
|
|
|
/* (3) On essaie d'instancier */
|
|
try{
|
|
$instance = new $class_name($arguments);
|
|
}catch(\Error $e){
|
|
return new Error(Err::UncallableModule);
|
|
}
|
|
|
|
/* (4) On retourne l' instance */
|
|
return $instance;
|
|
}
|
|
|
|
}
|