modifs.mineures sans commentaires
This commit is contained in:
		
							parent
							
								
									0d0c29aab8
								
							
						
					
					
						commit
						bed23c9425
					
				| @ -1,31 +1,49 @@ | ||||
| <?php | ||||
| namespace nulib\app\config; | ||||
| 
 | ||||
| use nulib\app\app; | ||||
| use nulib\app\config; | ||||
| 
 | ||||
| /** | ||||
|  * Class ProfileManager: gestionnaire de profils | ||||
|  */ | ||||
| class ProfileManager { | ||||
|   /** @var string code du système dont on gère le profil */ | ||||
|   /** | ||||
|    * @var string code du système dont on gère le profil | ||||
|    * | ||||
|    * ce code est utilisé pour dériver le nom du paramètre dans la configuration | ||||
|    * ainsi que la variable d'environnement depuis laquelle est chargée la valeur | ||||
|    * du 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, | ||||
|   ]; | ||||
| 
 | ||||
|   /** | ||||
|    * @var array mapping profil d'application --> profil effectif | ||||
|    * | ||||
|    * ce mapping est utilisé quand il faut calculer le profil courant s'il n'a | ||||
|    * pas été spécifié par l'utilisateur. il permet de faire correspondre le | ||||
|    * profil courant de l'application avec le profil effectif à sélectionner | ||||
|    */ | ||||
|   const PROFILE_MAP = null; | ||||
| 
 | ||||
|   function __construct(?array $params=null) { | ||||
|     $this->isAppProfile = $params["app"] ?? false; | ||||
|     $this->profiles = static::PROFILES; | ||||
|     $this->production_modes = static::PRODUCTION_MODES; | ||||
|     $appProfile = $params["app"] ?? false; | ||||
|     $this->productionModes = static::PRODUCTION_MODES; | ||||
|     $this->profileMap = static::PROFILE_MAP; | ||||
|     $name = $params["name"] ?? static::NAME; | ||||
|     $configKey = "${name}_profile"; | ||||
|     $envKey = strtoupper($configKey); | ||||
|     if ($appProfile) { | ||||
|     if ($this->isAppProfile) { | ||||
|       $this->envKeys = [$envKey, "APP_PROFILE"]; | ||||
|     } else { | ||||
|       $this->configKey = $configKey; | ||||
| @ -33,21 +51,26 @@ class ProfileManager { | ||||
|     } | ||||
|   } | ||||
| 
 | ||||
|   /** | ||||
|    * @var bool cet objet est-il utilisé pour gérer le profil de l'application? | ||||
|    */ | ||||
|   protected bool $isAppProfile; | ||||
| 
 | ||||
|   protected ?array $profiles; | ||||
| 
 | ||||
|   protected ?array $productionModes; | ||||
| 
 | ||||
|   function mapProfile(?string $profile): ?string { | ||||
|     return static::PROFILE_MAP[$profile] ?? $profile; | ||||
|   protected ?array $profileMap; | ||||
| 
 | ||||
|   protected function mapProfile(?string $profile): ?string { | ||||
|     return $this->profileMap[$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; | ||||
|     return config::k($this->configKey); | ||||
|   } | ||||
| 
 | ||||
|   protected array $envKeys = []; | ||||
| @ -78,7 +101,11 @@ class ProfileManager { | ||||
|     $profile ??= $this->getenvProfile(); | ||||
|     $profile ??= $this->getConfigProfile(); | ||||
|     $profile ??= $this->getDefaultProfile(); | ||||
|     $profile ??= $this->profiles[0] ?? "prod"; | ||||
|     if ($this->isAppProfile) { | ||||
|       $profile ??= $this->profiles[0] ?? "prod"; | ||||
|     } else { | ||||
|       $profile ??= $this->mapProfile(app::get_profile()); | ||||
|     } | ||||
|     $this->profile = $profile; | ||||
|     $this->productionMode = $this->productionModes[$profile] ?? false; | ||||
|   } | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user