59 lines
1.4 KiB
PHP
59 lines
1.4 KiB
PHP
<?php namespace Laravel\Session;
|
|
|
|
use Laravel\Config;
|
|
|
|
class Manager {
|
|
|
|
/**
|
|
* The active session driver.
|
|
*
|
|
* @var Session\Driver
|
|
*/
|
|
public static $driver;
|
|
|
|
/**
|
|
* Get the session driver.
|
|
*
|
|
* The session driver returned will be the driver specified in the session configuration
|
|
* file. Only one session driver may be active for a given request, so the driver will
|
|
* be managed as a singleton.
|
|
*
|
|
* @return Session\Driver
|
|
*/
|
|
public static function driver()
|
|
{
|
|
if (is_null(static::$driver))
|
|
{
|
|
$driver = Config::get('session.driver');
|
|
|
|
if (in_array($driver, array('cookie', 'file', 'database', 'memcached')))
|
|
{
|
|
return static::$driver = IoC::container()->resolve('laravel.session.'.$driver);
|
|
}
|
|
|
|
throw new \Exception("Session driver [$driver] is not supported.");
|
|
}
|
|
|
|
return static::$driver;
|
|
}
|
|
|
|
/**
|
|
* Pass all other methods to the default session driver.
|
|
*
|
|
* By dynamically passing these method calls to the default driver, the developer is
|
|
* able to use with a convenient API when working with the session.
|
|
*
|
|
* <code>
|
|
* // Get an item from the default session driver
|
|
* $name = Session::get('name');
|
|
*
|
|
* // Equivalent call using the driver method
|
|
* $name = Session::driver()->get('name');
|
|
* </code>
|
|
*/
|
|
public static function __callStatic($method, $parameters)
|
|
{
|
|
return call_user_func_array(array(static::driver(), $method), $parameters);
|
|
}
|
|
|
|
} |