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