| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153 | 
							- <?php namespace Laravel; use Closure;
 
- class Session {
 
- 	/**
 
- 	 * The session singleton instance for the request.
 
- 	 *
 
- 	 * @var Session\Payload
 
- 	 */
 
- 	public static $instance;
 
- 	/**
 
- 	 * The third-party driver registrar.
 
- 	 *
 
- 	 * @var array
 
- 	 */
 
- 	public static $registrar = array();
 
- 	/**
 
- 	 * The string name of the CSRF token stored in the session.
 
- 	 *
 
- 	 * @var string
 
- 	 */
 
- 	const csrf_token = 'csrf_token';
 
- 	/**
 
- 	 * Create the session payload and the load the session.
 
- 	 *
 
- 	 * @return void
 
- 	 */
 
- 	public static function load()
 
- 	{
 
- 		static::start(Config::get('session.driver'));
 
- 		static::$instance->load(Cookie::get(Config::get('session.cookie')));
 
- 	}
 
- 	/**
 
- 	 * Create the session payload instance for the request.
 
- 	 *
 
- 	 * @param  string  $driver
 
- 	 * @return void
 
- 	 */
 
- 	public static function start($driver)
 
- 	{
 
- 		static::$instance = new Session\Payload(static::factory($driver));
 
- 	}
 
- 	/**
 
- 	 * Create a new session driver instance.
 
- 	 *
 
- 	 * @param  string  $driver
 
- 	 * @return Session\Drivers\Driver
 
- 	 */
 
- 	public static function factory($driver)
 
- 	{
 
- 		if (isset(static::$registrar[$driver]))
 
- 		{
 
- 			$resolver = static::$registrar[$driver];
 
- 			return $resolver();
 
- 		}
 
- 		switch ($driver)
 
- 		{
 
- 			case 'apc':
 
- 				return new Session\Drivers\APC(Cache::driver('apc'));
 
- 			case 'cookie':
 
- 				return new Session\Drivers\Cookie;
 
- 			case 'database':
 
- 				return new Session\Drivers\Database(Database::connection());
 
- 			case 'file':
 
- 				return new Session\Drivers\File(path('storage').'sessions'.DS);
 
- 			case 'memcached':
 
- 				return new Session\Drivers\Memcached(Cache::driver('memcached'));
 
- 			case 'memory':
 
- 				return new Session\Drivers\Memory;
 
- 			case 'redis':
 
- 				return new Session\Drivers\Redis(Cache::driver('redis'));
 
- 			default:
 
- 				throw new \Exception("Session driver [$driver] is not supported.");
 
- 		}
 
- 	}
 
- 	/**
 
- 	 * Retrieve the active session payload instance for the request.
 
- 	 *
 
- 	 * <code>
 
- 	 *		// Retrieve the session instance and get an item
 
- 	 *		Session::instance()->get('name');
 
- 	 *
 
- 	 *		// Retrieve the session instance and place an item in the session
 
- 	 *		Session::instance()->put('name', 'Taylor');
 
- 	 * </code>
 
- 	 *
 
- 	 * @return Session\Payload
 
- 	 */
 
- 	public static function instance()
 
- 	{
 
- 		if (static::started()) return static::$instance;
 
- 		throw new \Exception("A driver must be set before using the session.");
 
- 	}
 
- 	/**
 
- 	 * Determine if session handling has been started for the request.
 
- 	 *
 
- 	 * @return bool
 
- 	 */
 
- 	public static function started()
 
- 	{
 
- 		return ! is_null(static::$instance);
 
- 	}
 
- 	/**
 
- 	 * Register a third-party cache driver.
 
- 	 *
 
- 	 * @param  string   $driver
 
- 	 * @param  Closure  $resolver
 
- 	 * @return void
 
- 	 */
 
- 	public static function extend($driver, Closure $resolver)
 
- 	{
 
- 		static::$registrar[$driver] = $resolver;
 
- 	}
 
- 	/**
 
- 	 * Magic Method for calling the methods on the session singleton instance.
 
- 	 *
 
- 	 * <code>
 
- 	 *		// Retrieve a value from the session
 
- 	 *		$value = Session::get('name');
 
- 	 *
 
- 	 *		// Write a value to the session storage
 
- 	 *		$value = Session::put('name', 'Taylor');
 
- 	 *
 
- 	 *		// Equivalent statement using the "instance" method
 
- 	 *		$value = Session::instance()->put('name', 'Taylor');
 
- 	 * </code>
 
- 	 */
 
- 	public static function __callStatic($method, $parameters)
 
- 	{
 
- 		return call_user_func_array(array(static::instance(), $method), $parameters);
 
- 	}
 
- }
 
 
  |