56 lines
		
	
	
		
			2.1 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			56 lines
		
	
	
		
			2.1 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
| <?php
 | |
| namespace nulib\app;
 | |
| 
 | |
| use nulib\app\config\ConfigManager;
 | |
| use nulib\app\config\JsonConfig;
 | |
| use nulib\app\config\YamlConfig;
 | |
| use nulib\os\path;
 | |
| use nulib\ValueException;
 | |
| 
 | |
| /**
 | |
|  * Class config: gestion de la configuration de l'application
 | |
|  */
 | |
| class config {
 | |
|   protected static ConfigManager $config;
 | |
| 
 | |
|   static function init_configurator($configurators): void {
 | |
|     self::$config->addConfigurator($configurators);
 | |
|   }
 | |
| 
 | |
|   # certains types de configurations sont normalisés
 | |
|   /** ne configurer que le minimum pour que l'application puisse s'initialiser */
 | |
|   const CONFIGURE_INITIAL_ONLY = ["include" => "initial"];
 | |
|   /** ne configurer que les routes */
 | |
|   const CONFIGURE_ROUTES_ONLY = ["include" => "routes"];
 | |
|   /** configurer uniquement ce qui ne nécessite pas d'avoir une session */
 | |
|   const CONFIGURE_NO_SESSION = ["exclude" => "session"];
 | |
| 
 | |
|   static function configure(?array $params=null): void {
 | |
|     self::$config->configure($params);
 | |
|   }
 | |
|   
 | |
|   static final function add($config, string ...$profiles): void { self::$config->addConfig($config, $profiles); }
 | |
|   static final function load_config($file): void {
 | |
|     $ext = path::ext($file);
 | |
|     if ($ext === ".yml" || $ext === ".yaml") {
 | |
|       $config = new YamlConfig($file);
 | |
|     } elseif ($ext === ".json") {
 | |
|       $config = new JsonConfig($file);
 | |
|     } else {
 | |
|       throw ValueException::invalid_value($file, "config file");
 | |
|     }
 | |
|     self::add($config);
 | |
|   }
 | |
| 
 | |
|   static final function get(string $pkey, $default=null, ?string $profile=null) { return self::$config->getValue($pkey, $default, $profile); }
 | |
|   static final function k(string $pkey, $default=null) { return self::$config->getValue("app.$pkey", $default); }
 | |
|   static final function db(string $pkey, $default=null) { return self::$config->getValue("dbs.$pkey", $default); }
 | |
|   static final function m(string $pkey, $default=null) { return self::$config->getValue("msgs.$pkey", $default); }
 | |
|   static final function l(string $pkey, $default=null) { return self::$config->getValue("mails.$pkey", $default); }
 | |
| }
 | |
| 
 | |
| new class extends config {
 | |
|   function __construct() {
 | |
|     self::$config = new ConfigManager();
 | |
|   }
 | |
| }; |