miniMVC/sys/libraries/session.php

91 lines
1.7 KiB
PHP

<?php
/**
* MiniMVC
*
* Convention-based micro-framework for PHP
*
* @package miniMVC
* @author Timothy J. Warren
* @copyright Copyright (c) 2011 - 2012
* @link https://github.com/timw4mail/miniMVC
* @license http://philsturgeon.co.uk/code/dbad-license
*/
// --------------------------------------------------------------------------
/**
* Class to improve handling of PHP sessions
*
* @package miniMVC
* @subpackage Libraries
*/
class MM_Session {
// Combine traits for more dynamic behavior
// but use Singleton for __invoke, so calling
// that method does not create a new instance
use JSObject, Singleton
{
Singleton::__invoke insteadof JSObject;
}
/**
* Reference to session superglobal
*
* @var array
*/
protected $sess = [];
/**
* Start a session
*/
protected function __construct()
{
session_start();
// Save a reference to the session for later access
$_SESSION['MM_SESSION'] = (isset($_SESSION['MM_SESSION']) ?: [];
$this->sess =& $_SESSION['MM_SESSION'];
}
// --------------------------------------------------------------------------
/**
* Set a session value
*
* @param string $key
* @param mixed $val
* @return void
*/
public function __set($key, $val)
{
$this->sess[$key] = $val;
}
// --------------------------------------------------------------------------
/**
* Retreive a session value
*
* @param string $key
* @return mixed
*/
public function __get($key)
{
return $this->sess[$key];
}
// --------------------------------------------------------------------------
/**
* Destroy a session
*
* @return void
*/
public function destroy()
{
sess_destroy();
}
}
// End of session.php