* @license http://www.gnu.org/licenses/gpl-2.0.txt GPL, version 2 * @author Icinga Development Team * */ // {{{ICINGA_LICENSE_HEADER}}} namespace Icinga\Web; use Icinga\Session\PhpSession; use Icinga\Session\SessionNamespace; use Icinga\Session\Session as BaseSession; use Icinga\Exception\ProgrammingError; /** * Session container */ class Session { /** * The current session * * @var BaseSession $session */ private static $session; /** * Create the session * * @param BaseSession $session * * @return BaseSession */ public static function create(BaseSession $session = null) { if ($session === null) { self::$session = new PhpSession(); } else { self::$session = $session; } return self::$session; } /** * Return the current session * * @return BaseSession * @throws ProgrammingError */ public static function getSession() { if (self::$session === null) { throw new ProgrammingError('No session created yet'); } return self::$session; } /** * Get or create a new session namespace * * @param string $identifier The namespace's identifier * * @return SessionNamespace * @throws ProgrammingError */ public static function getNamespace($identifier) { if (self::$session === null) { throw new ProgrammingError('No session created yet'); } return self::$session->getNamespace($identifier); } }