modules.php (1409B)
1 <?php 2 3 class Modules { 4 static $liste_modules = array(); 5 6 public static function enregister_module($classe, $type, $get_post = array(), $post = array(), $file = array()) { 7 self::$liste_modules[$type] = array( 8 "classe" => $classe, 9 "get_post" => qw($get_post), 10 "post" => qw($post), 11 "file" => qw($file) 12 ); 13 self::$liste_modules[$type]["get_post"][] = "action"; // Toujours présent. 14 } 15 16 public static function get_module($chemin) { 17 $type = Stockage::get_prop($chemin, "type"); 18 if (Erreur::is_erreur($type)) { 19 // TODO : permettre l'empilement des erreurs. Quelle syntaxe utiliser ? 20 Erreur::fatale("Erreur lors de la lecture du type de la page " . $chemin->get() . ".", $type); 21 } else if (!isset(self::$liste_modules[$type])) { 22 Erreur::fatale("Type inconnu (" . var_export($type, true) . ") pour la page " . $chemin->get() . "."); 23 } 24 return self::$liste_modules[$type]; 25 } 26 27 public static function action($chemin, $action, $paramètres) { 28 $module = self::get_module($chemin); 29 if ($module === false) return self::page(false, "Erreur"); 30 return call_user_func(array($module["classe"], "action"), $chemin, $action, $paramètres); 31 } 32 33 public static function vue($chemin, $vue = "normal") { 34 $module = self::get_module($chemin); 35 if ($module === false) return self::page(false, "Erreur"); 36 return call_user_func(array($module["classe"], "vue"), $chemin, $vue); 37 } 38 } 39 40 ?>