modifs.mineures sans commentaires
This commit is contained in:
parent
e16581f849
commit
0d0c29aab8
@ -1,50 +0,0 @@
|
||||
<?php
|
||||
namespace nulib\app;
|
||||
|
||||
/**
|
||||
* Class ProfileManager: gestionnaire de profils
|
||||
*/
|
||||
class ProfileManager {
|
||||
const NAME = null;
|
||||
const PROFILES = ["prod", "test", "devel"];
|
||||
const PRODUCTION_MODES = [
|
||||
"prod" => true,
|
||||
"test" => true,
|
||||
];
|
||||
const PROFILE_MAP = null;
|
||||
|
||||
function __construct(?array $params=null) {
|
||||
$name = $params["name"] ?? static::NAME;
|
||||
if ($name !== null) $name .= "_";
|
||||
$prefixes = [strtoupper($name)];
|
||||
$app = $params["app"] ?? false;
|
||||
if ($app) $prefixes[] = "APP_";
|
||||
$this->envPrefixes = $prefixes;
|
||||
}
|
||||
|
||||
protected array $envPrefixes;
|
||||
|
||||
function getEnvProfile(): ?string {
|
||||
foreach ($this->envPrefixes as $prefix) {
|
||||
$profile = getenv($prefix."PROFILE");
|
||||
if ($profile !== false) return $profile;
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
protected ?string $defaultProfile = null;
|
||||
|
||||
function getDefaultProfile(): ?string {
|
||||
return $this->defaultProfile;
|
||||
}
|
||||
|
||||
function setDefaultProfile(?string $profile): void {
|
||||
$this->defaultProfile = $profile;
|
||||
}
|
||||
|
||||
function getProfile(?bool &$productionMode=null): string {
|
||||
}
|
||||
|
||||
function setProfile(?string $profile=null, ?bool $productionMode=null): void {
|
||||
}
|
||||
}
|
@ -1,8 +1,30 @@
|
||||
<?php
|
||||
namespace nulib\app;
|
||||
|
||||
use nulib\app\config\ConfigManager;
|
||||
use nulib\app\config\ProfileManager;
|
||||
use nulib\cl;
|
||||
|
||||
/**
|
||||
* Class config: gestion de la configuration de l'application
|
||||
*/
|
||||
class config {
|
||||
protected static ConfigManager $config;
|
||||
protected static ProfileManager $profile;
|
||||
|
||||
static function init(string $appcode): void {
|
||||
self::$config = new ConfigManager();
|
||||
self::$profile = new ProfileManager([
|
||||
"app" => true,
|
||||
"name" => $appcode,
|
||||
]);
|
||||
}
|
||||
|
||||
static function init_configurator($configurators): void {
|
||||
self::$config->addConfigurators(cl::with($configurators));
|
||||
}
|
||||
|
||||
static function configure(?array $params=null): void {
|
||||
self::$config->configure($params);
|
||||
}
|
||||
}
|
||||
|
5
src/app/config/ConfigManager.php
Normal file
5
src/app/config/ConfigManager.php
Normal file
@ -0,0 +1,5 @@
|
||||
<?php
|
||||
namespace nulib\app\config;
|
||||
|
||||
class ConfigManager {
|
||||
}
|
99
src/app/config/ProfileManager.php
Normal file
99
src/app/config/ProfileManager.php
Normal file
@ -0,0 +1,99 @@
|
||||
<?php
|
||||
namespace nulib\app\config;
|
||||
|
||||
use nulib\app\config;
|
||||
|
||||
/**
|
||||
* Class ProfileManager: gestionnaire de profils
|
||||
*/
|
||||
class ProfileManager {
|
||||
/** @var string code du système dont on gère le profil */
|
||||
const NAME = null;
|
||||
/** @var array|null liste des profils valides */
|
||||
const PROFILES = null;
|
||||
/** @var array profils dont le mode production doit être actif */
|
||||
const PRODUCTION_MODES = [
|
||||
"prod" => true,
|
||||
"test" => true,
|
||||
];
|
||||
const PROFILE_MAP = null;
|
||||
|
||||
function __construct(?array $params=null) {
|
||||
$this->profiles = static::PROFILES;
|
||||
$this->production_modes = static::PRODUCTION_MODES;
|
||||
$appProfile = $params["app"] ?? false;
|
||||
$name = $params["name"] ?? static::NAME;
|
||||
$configKey = "${name}_profile";
|
||||
$envKey = strtoupper($configKey);
|
||||
if ($appProfile) {
|
||||
$this->envKeys = [$envKey, "APP_PROFILE"];
|
||||
} else {
|
||||
$this->configKey = $configKey;
|
||||
$this->envKeys = [$envKey];
|
||||
}
|
||||
}
|
||||
|
||||
protected ?array $profiles;
|
||||
|
||||
protected ?array $productionModes;
|
||||
|
||||
function mapProfile(?string $profile): ?string {
|
||||
return static::PROFILE_MAP[$profile] ?? $profile;
|
||||
}
|
||||
|
||||
protected ?string $configKey = null;
|
||||
|
||||
function getConfigProfile(): ?string {
|
||||
if ($this->configKey === null) return null;
|
||||
$profile = config::k($this->configKey);
|
||||
$profile = $this->mapProfile($profile);
|
||||
return $profile;
|
||||
}
|
||||
|
||||
protected array $envKeys = [];
|
||||
|
||||
function getEnvProfile(): ?string {
|
||||
foreach ($this->envKeys as $envKey) {
|
||||
$profile = getenv($envKey);
|
||||
if ($profile !== false) return $profile;
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
protected ?string $defaultProfile = null;
|
||||
|
||||
function getDefaultProfile(): ?string {
|
||||
return $this->defaultProfile;
|
||||
}
|
||||
|
||||
function setDefaultProfile(?string $profile): void {
|
||||
$this->defaultProfile = $profile;
|
||||
}
|
||||
|
||||
protected ?string $profile = null;
|
||||
|
||||
protected bool $productionMode = false;
|
||||
|
||||
protected function resolveProfile(): void {
|
||||
$profile ??= $this->getenvProfile();
|
||||
$profile ??= $this->getConfigProfile();
|
||||
$profile ??= $this->getDefaultProfile();
|
||||
$profile ??= $this->profiles[0] ?? "prod";
|
||||
$this->profile = $profile;
|
||||
$this->productionMode = $this->productionModes[$profile] ?? false;
|
||||
}
|
||||
|
||||
function getProfile(?bool &$productionMode=null): string {
|
||||
if ($this->profile === null) $this->resolveProfile();
|
||||
$productionMode = $this->productionMode;
|
||||
return $this->profile;
|
||||
}
|
||||
|
||||
function setProfile(?string $profile=null, ?bool $productionMode=null): void {
|
||||
if ($profile === null) $this->profile = null;
|
||||
$profile ??= $this->getProfile($productionMode);
|
||||
$productionMode ??= $this->productionModes[$profile] ?? false;
|
||||
$this->profile = $profile;
|
||||
$this->productionMode = $productionMode;
|
||||
}
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user