SMMP/build/api/core/ModuleFactory.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;
}
}