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(); } };