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

namespace IlluminateSession;

use 
IlluminateSupportInteractsWithTime;
use 
SessionHandlerInterface;

class 
ArraySessionHandler implements SessionHandlerInterface
{
    use 
InteractsWithTime;

    
/**
     * The array of stored values.
     *
     * @var array
     */
    
protected $storage = [];

    
/**
     * The number of minutes the session should be valid.
     *
     * @var int
     */
    
protected $minutes;

    
/**
     * Create a new array driven handler instance.
     *
     * @param  int  $minutes
     * @return void
     */
    
public function __construct($minutes)
    {
        
$this->minutes $minutes;
    }

    
/**
     * {@inheritdoc}
     *
     * @return bool
     */
    
public function open($savePath$sessionName): bool
    
{
        return 
true;
    }

    
/**
     * {@inheritdoc}
     *
     * @return bool
     */
    
public function close(): bool
    
{
        return 
true;
    }

    
/**
     * {@inheritdoc}
     *
     * @return string|false
     */
    
public function read($sessionId): string|false
    
{
        if (! isset(
$this->storage[$sessionId])) {
            return 
'';
        }

        
$session $this->storage[$sessionId];

        
$expiration $this->calculateExpiration($this->minutes 60);

        if (isset(
$session['time']) && $session['time'] >= $expiration) {
            return 
$session['data'];
        }

        return 
'';
    }

    
/**
     * {@inheritdoc}
     *
     * @return bool
     */
    
public function write($sessionId$data): bool
    
{
        
$this->storage[$sessionId] = [
            
'data' => $data,
            
'time' => $this->currentTime(),
        ];

        return 
true;
    }

    
/**
     * {@inheritdoc}
     *
     * @return bool
     */
    
public function destroy($sessionId): bool
    
{
        if (isset(
$this->storage[$sessionId])) {
            unset(
$this->storage[$sessionId]);
        }

        return 
true;
    }

    
/**
     * {@inheritdoc}
     *
     * @return int
     */
    
public function gc($lifetime): int
    
{
        
$expiration $this->calculateExpiration($lifetime);

        
$deletedSessions 0;

        foreach (
$this->storage as $sessionId => $session) {
            if (
$session['time'] < $expiration) {
                unset(
$this->storage[$sessionId]);
                
$deletedSessions++;
            }
        }

        return 
$deletedSessions;
    }

    
/**
     * Get the expiration time of the session.
     *
     * @param  int  $seconds
     * @return int
     */
    
protected function calculateExpiration($seconds)
    {
        return 
$this->currentTime() - $seconds;
    }
}
Онлайн: 0
Реклама