Вход Регистрация
Файл: gapps/vendor/laravel/framework/src/Illuminate/Session/SessionManager.php
Строк: 319
<?php

namespace IlluminateSession;

use 
IlluminateSupportManager;
use 
SymfonyComponentHttpFoundationSessionStorageHandlerNullSessionHandler;

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 IlluminateSessionStore
     */
    
protected function createArrayDriver()
    {
        return 
$this->buildSession(new NullSessionHandler);
    }

    
/**
     * Create an instance of the "cookie" session driver.
     *
     * @return IlluminateSessionStore
     */
    
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 IlluminateSessionStore
     */
    
protected function createFileDriver()
    {
        return 
$this->createNativeDriver();
    }

    
/**
     * Create an instance of the file session driver.
     *
     * @return IlluminateSessionStore
     */
    
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 IlluminateSessionStore
     */
    
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));
    }

    
/**
     * Create an instance of the legacy database session driver.
     *
     * @return IlluminateSessionStore
     *
     * @deprecated since version 5.2.
     */
    
protected function createLegacyDatabaseDriver()
    {
        
$connection $this->getDatabaseConnection();

        
$table $this->app['config']['session.table'];

        
$lifetime $this->app['config']['session.lifetime'];

        return 
$this->buildSession(new LegacyDatabaseSessionHandler($connection$table$lifetime));
    }

    
/**
     * Get the database connection for the database driver.
     *
     * @return IlluminateDatabaseConnection
     */
    
protected function getDatabaseConnection()
    {
        
$connection $this->app['config']['session.connection'];

        return 
$this->app['db']->connection($connection);
    }

    
/**
     * Create an instance of the APC session driver.
     *
     * @return IlluminateSessionStore
     */
    
protected function createApcDriver()
    {
        return 
$this->createCacheBased('apc');
    }

    
/**
     * Create an instance of the Memcached session driver.
     *
     * @return IlluminateSessionStore
     */
    
protected function createMemcachedDriver()
    {
        return 
$this->createCacheBased('memcached');
    }

    
/**
     * Create an instance of the Wincache session driver.
     *
     * @return IlluminateSessionStore
     */
    
protected function createWincacheDriver()
    {
        return 
$this->createCacheBased('wincache');
    }

    
/**
     * Create an instance of the Redis session driver.
     *
     * @return IlluminateSessionStore
     */
    
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 IlluminateSessionStore
     */
    
protected function createCacheBased($driver)
    {
        return 
$this->buildSession($this->createCacheHandler($driver));
    }

    
/**
     * Create the cache based session handler instance.
     *
     * @param  string  $driver
     * @return IlluminateSessionCacheBasedSessionHandler
     */
    
protected function createCacheHandler($driver)
    {
        
$minutes $this->app['config']['session.lifetime'];

        return new 
CacheBasedSessionHandler(clone $this->app['cache']->driver($driver), $minutes);
    }

    
/**
     * Build the session instance.
     *
     * @param  SessionHandlerInterface  $handler
     * @return IlluminateSessionStore
     */
    
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;
    }
}
Онлайн: 1
Реклама