47 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			47 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
| <?php
 | |
| namespace nur\config;
 | |
| 
 | |
| use nur\A;
 | |
| use nur\session;
 | |
| 
 | |
| /**
 | |
|  * Class SessionConfig: configuration stockée dans la session
 | |
|  *
 | |
|  * si la session n'est pas démarrée, cette classe est fonctionnellement comme
 | |
|  * {@link ArrayConfig} (i.e la session n'est pas démarrée automatiquement)
 | |
|  */
 | |
| class SessionConfig extends DynConfig {
 | |
|   /** @var array */
 | |
|   protected $config;
 | |
| 
 | |
|   function has(string $pkey, string $profile): bool {
 | |
|     $this->updateSession();
 | |
|     if (session::started()) return session::phas("config:$profile:$pkey");
 | |
|     else return A::phas_s($this->config, "$profile.$pkey");
 | |
|   }
 | |
| 
 | |
|   function get(string $pkey, string $profile) {
 | |
|     $this->updateSession();
 | |
|     if (session::started()) return session::pget("config:$profile:$pkey");
 | |
|     else return A::pget_s($this->config, "$profile.$pkey");
 | |
|   }
 | |
| 
 | |
|   function set(string $pkey, $value, string $profile): void {
 | |
|     $this->updateSession();
 | |
|     if (session::started()) session::pset("config:$profile:$pkey", $value);
 | |
|     else A::pset_s($this->config, "$profile.$pkey", $value);
 | |
|   }
 | |
| 
 | |
|   /**
 | |
|    * si la session est démarrée et que des valeurs avaient déjà été inscrites
 | |
|    * dans cet objet, alors mettre à jour la session en conséquence.
 | |
|    */
 | |
|   function updateSession() {
 | |
|     if (!session::started()) return;
 | |
|     $config = $this->config;
 | |
|     if ($config === null) return;
 | |
|     #XXX mettre à jour la session à partir de $config
 | |
|     $this->config = null;
 | |
|   }
 | |
| }
 |