/vendor/laravel/framework/src/Illuminate/Session/SessionManager.php
PHP | 212 lines | 92 code | 30 blank | 90 comment | 2 complexity | c296c03ed4aa2f45bec1aef0679ff2bf MD5 | raw file
- <?php
- namespace Illuminate\Session;
- use Illuminate\Support\Manager;
- use Symfony\Component\HttpFoundation\Session\Storage\Handler\NullSessionHandler;
- class SessionManager extends Manager
- {
- /**
- * Call a custom driver creator.
- *
- * @param string $driver
- * @return mixed
- */
- protected function callCustomCreator($driver)
- {
- return $this->buildSession(parent::callCustomCreator($driver));
- }
- /**
- * Create an instance of the "array" session driver.
- *
- * @return \Illuminate\Session\Store
- */
- protected function createArrayDriver()
- {
- return $this->buildSession(new NullSessionHandler);
- }
- /**
- * Create an instance of the "cookie" session driver.
- *
- * @return \Illuminate\Session\Store
- */
- protected function createCookieDriver()
- {
- $lifetime = $this->app['config']['session.lifetime'];
- return $this->buildSession(new CookieSessionHandler($this->app['cookie'], $lifetime));
- }
- /**
- * Create an instance of the file session driver.
- *
- * @return \Illuminate\Session\Store
- */
- protected function createFileDriver()
- {
- return $this->createNativeDriver();
- }
- /**
- * Create an instance of the file session driver.
- *
- * @return \Illuminate\Session\Store
- */
- protected function createNativeDriver()
- {
- $path = $this->app['config']['session.files'];
- $lifetime = $this->app['config']['session.lifetime'];
- return $this->buildSession(new FileSessionHandler($this->app['files'], $path, $lifetime));
- }
- /**
- * Create an instance of the database session driver.
- *
- * @return \Illuminate\Session\Store
- */
- protected function createDatabaseDriver()
- {
- $connection = $this->getDatabaseConnection();
- $table = $this->app['config']['session.table'];
- $lifetime = $this->app['config']['session.lifetime'];
- return $this->buildSession(new DatabaseSessionHandler($connection, $table, $lifetime, $this->app));
- }
- /**
- * Get the database connection for the database driver.
- *
- * @return \Illuminate\Database\Connection
- */
- protected function getDatabaseConnection()
- {
- $connection = $this->app['config']['session.connection'];
- return $this->app['db']->connection($connection);
- }
- /**
- * Create an instance of the APC session driver.
- *
- * @return \Illuminate\Session\Store
- */
- protected function createApcDriver()
- {
- return $this->createCacheBased('apc');
- }
- /**
- * Create an instance of the Memcached session driver.
- *
- * @return \Illuminate\Session\Store
- */
- protected function createMemcachedDriver()
- {
- return $this->createCacheBased('memcached');
- }
- /**
- * Create an instance of the Wincache session driver.
- *
- * @return \Illuminate\Session\Store
- */
- protected function createWincacheDriver()
- {
- return $this->createCacheBased('wincache');
- }
- /**
- * Create an instance of the Redis session driver.
- *
- * @return \Illuminate\Session\Store
- */
- protected function createRedisDriver()
- {
- $handler = $this->createCacheHandler('redis');
- $handler->getCache()->getStore()->setConnection($this->app['config']['session.connection']);
- return $this->buildSession($handler);
- }
- /**
- * Create an instance of a cache driven driver.
- *
- * @param string $driver
- * @return \Illuminate\Session\Store
- */
- protected function createCacheBased($driver)
- {
- return $this->buildSession($this->createCacheHandler($driver));
- }
- /**
- * Create the cache based session handler instance.
- *
- * @param string $driver
- * @return \Illuminate\Session\CacheBasedSessionHandler
- */
- protected function createCacheHandler($driver)
- {
- $store = $this->app['config']->get('session.store') ?: $driver;
- $minutes = $this->app['config']['session.lifetime'];
- return new CacheBasedSessionHandler(clone $this->app['cache']->store($store), $minutes);
- }
- /**
- * Build the session instance.
- *
- * @param \SessionHandlerInterface $handler
- * @return \Illuminate\Session\Store
- */
- protected function buildSession($handler)
- {
- if ($this->app['config']['session.encrypt']) {
- return new EncryptedStore(
- $this->app['config']['session.cookie'], $handler, $this->app['encrypter']
- );
- } else {
- return new Store($this->app['config']['session.cookie'], $handler);
- }
- }
- /**
- * Get the session configuration.
- *
- * @return array
- */
- public function getSessionConfig()
- {
- return $this->app['config']['session'];
- }
- /**
- * Get the default session driver name.
- *
- * @return string
- */
- public function getDefaultDriver()
- {
- return $this->app['config']['session.driver'];
- }
- /**
- * Set the default session driver name.
- *
- * @param string $name
- * @return void
- */
- public function setDefaultDriver($name)
- {
- $this->app['config']['session.driver'] = $name;
- }
- }