nur-sery/nur_src/config/SessionConfig.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;
}
}