<?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{

	use JSObject, Singleton
	{
		Singleton::__invoke insteadof JSObject;
	}
	
	/**
	 * Start a session
	 */
	protected function __construct()
	{
		session_start();

		/**
		 * Define a unique id for this session
		 */
		define('SESS_ID', uniqid(uniqid(), TRUE));

		$_SESSION[SESS_ID] = array();
	}
	
	// --------------------------------------------------------------------------

	/**
	 * Set a session value
	 *
	 * @param string $key
	 * @param mixed $val
	 * @return void
	 */ 
	public function __set($key, $val)
	{
		$_SESSION[SESS_ID][$key] = $val;
	}
	
	// --------------------------------------------------------------------------

	/**
	 * Retreive a session value
	 *
	 * @param string $key
	 * @return mixed
	 */
	public function __get($key)
	{
		return $_SESSION[SESS_ID][$key];
	}
	
	// --------------------------------------------------------------------------

	/**
	 * Destroy a session
	 *
	 * @return void
	 */
	public function destroy()
	{
		sess_destroy();
	}
}
// End of php_session.php