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