85 lines
		
	
	
		
			2.1 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			85 lines
		
	
	
		
			2.1 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
| <?php
 | |
| namespace nur\config;
 | |
| 
 | |
| use nur\A;
 | |
| use nur\b\ValueException;
 | |
| 
 | |
| /**
 | |
|  * Class ArrayConfig: une configuration stockée dans un tableau
 | |
|  *
 | |
|  * Lors de la création de l'objet, il faut préciser le cas échéant dans quels
 | |
|  * profils sont valides cette configuration.
 | |
|  */
 | |
| class ArrayConfig extends DynConfig {
 | |
|   protected function PROFILES(): array {
 | |
|     return static::PROFILES;
 | |
|   } const PROFILES = [];
 | |
| 
 | |
|   protected function SCHEMA(): array {
 | |
|     return static::SCHEMA;
 | |
|   } const SCHEMA = [];
 | |
| 
 | |
|   protected function DBS(): array {
 | |
|     return static::DBS;
 | |
|   } const DBS = [];
 | |
| 
 | |
|   protected function MSGS(): array {
 | |
|     return static::MSGS;
 | |
|   } const MSGS = [];
 | |
| 
 | |
|   protected function MAILS(): array {
 | |
|     return static::MAILS;
 | |
|   } const MAILS = [];
 | |
| 
 | |
|   protected function APP(): array {
 | |
|     return static::APP;
 | |
|   } const APP = [];
 | |
| 
 | |
|   protected function USER(): array {
 | |
|     return static::USER;
 | |
|   } const USER = [];
 | |
| 
 | |
|   /**
 | |
|    * @var array liste des profils dans lesquels cette configuration est valide.
 | |
|    *
 | |
|    * un tableau vide signifie que la configuration est valide dans tous les
 | |
|    * profils
 | |
|    */
 | |
|   protected $profiles;
 | |
| 
 | |
|   /** @var array */
 | |
|   protected $config;
 | |
| 
 | |
|   function __construct(?array $config=null, string ...$profiles) {
 | |
|     if (!$profiles) $profiles = $this->PROFILES();
 | |
|     $this->profiles = $profiles;
 | |
| 
 | |
|     A::update_nx($config, [
 | |
|       "schema" => $this->SCHEMA(),
 | |
|       "dbs" => $this->DBS(),
 | |
|       "msgs" => $this->MSGS(),
 | |
|       "mails" => $this->MAILS(),
 | |
|       "app" => $this->APP(),
 | |
|       "user" => $this->USER(),
 | |
|     ]);
 | |
|     $this->config = $config;
 | |
|   }
 | |
| 
 | |
|   function has(string $pkey, string $profile): bool {
 | |
|     if ($this->profiles && !in_array($profile, $this->profiles)) return false;
 | |
|     return A::phas_s($this->config, $pkey);
 | |
|   }
 | |
| 
 | |
|   function get(string $pkey, string $profile) {
 | |
|     if ($this->profiles && !in_array($profile, $this->profiles)) return null;
 | |
|     return A::pget_s($this->config, $pkey);
 | |
|   }
 | |
| 
 | |
|   function set(string $pkey, $value, string $profile): void {
 | |
|     if ($this->profiles && !in_array($profile, $this->profiles)) {
 | |
|       throw new ValueException("$profile: unauthorized profile");
 | |
|     }
 | |
|     A::pset_s($this->config, $pkey, $value);
 | |
|   }
 | |
| }
 |