Initial xentral_oss_20.3.c9ffacf
This commit is contained in:
@@ -0,0 +1,63 @@
|
||||
<?php
|
||||
|
||||
namespace Xentral\Components\Http\Session;
|
||||
|
||||
use Xentral\Components\Http\Exception\SessionException;
|
||||
|
||||
class SessionHandler
|
||||
{
|
||||
/**
|
||||
* Create a session object with actual session data
|
||||
*
|
||||
* @throws SessionException
|
||||
*
|
||||
* @return Session Session object
|
||||
*/
|
||||
public static function createSession()
|
||||
{
|
||||
if (!extension_loaded('session')) {
|
||||
throw new SessionException('PHP extension "session" is missing.');
|
||||
}
|
||||
|
||||
if (self::isSessionStarted()) {
|
||||
throw new SessionException('Failed to create session. Session can be started only once.');
|
||||
}
|
||||
if (session_status() === PHP_SESSION_DISABLED) {
|
||||
throw new SessionException('Failed to create session. Sessions are disabled.');
|
||||
}
|
||||
|
||||
$isStarted = session_start();
|
||||
if ($isStarted === false) {
|
||||
throw new SessionException('Failed to create session. Initialization failed.');
|
||||
}
|
||||
|
||||
if (session_status() === PHP_SESSION_NONE) {
|
||||
throw new SessionException('Failed to create session. Unexpected status: PHP_SESSION_NONE');
|
||||
}
|
||||
|
||||
return new Session($_SESSION);
|
||||
}
|
||||
|
||||
/**
|
||||
* @return bool
|
||||
*/
|
||||
public static function isSessionStarted()
|
||||
{
|
||||
$status = session_status();
|
||||
|
||||
return $status === PHP_SESSION_ACTIVE;
|
||||
}
|
||||
|
||||
/**
|
||||
* Save and close the session
|
||||
*
|
||||
* @param Session $session
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public static function commitSession(Session $session)
|
||||
{
|
||||
$session->dumpSession($_SESSION);
|
||||
session_write_close();
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user