Вход Регистрация
Файл: contao-3.5.8/system/modules/core/library/Contao/Session.php
Строк: 135
<?php

/**
 * Contao Open Source CMS
 *
 * Copyright (c) 2005-2016 Leo Feyer
 *
 * @license LGPL-3.0+
 */

namespace Contao;


/**
 * Handles reading and updating the session data
 *
 * The class functions as an adapter for the PHP $_SESSION array and separates
 * back end from front end session data.
 *
 * Usage:
 *
 *     $session = Session::getInstance();
 *     $session->set('foo', 'bar');
 *     echo $session->get('foo');
 *
 * @author Leo Feyer <https://github.com/leofeyer>
 */
class Session
{

    
/**
     * Object instance (Singleton)
     * @var Session
     */
    
protected static $objInstance;

    
/**
     * Session data
     * @var array
     */
    
protected $arrSession;


    
/**
     * Get the session data
     */
    
protected function __construct()
    {
        switch (
TL_MODE)
        {
            case 
'BE':
                
$this->arrSession = (array) $_SESSION['BE_DATA'];
                break;

            case 
'FE':
                
$this->arrSession = (array) $_SESSION['FE_DATA'];
                break;

            default:
                
$this->arrSession = (array) $_SESSION;
                break;
        }
    }


    
/**
     * Save the session data
     */
    
public function __destruct()
    {
        switch (
TL_MODE)
        {
            case 
'BE':
                
$_SESSION['BE_DATA'] = $this->arrSession;
                break;

            case 
'FE':
                
$_SESSION['FE_DATA'] = $this->arrSession;
                break;

            default:
                
$_SESSION $this->arrSession;
                break;
        }
    }


    
/**
     * Prevent cloning of the object (Singleton)
     */
    
final public function __clone() {}


    
/**
     * Return the object instance (Singleton)
     *
     * @return Session The object instance
     */
    
public static function getInstance()
    {
        if (static::
$objInstance === null)
        {
            static::
$objInstance = new static();
        }

        return static::
$objInstance;
    }


    
/**
     * Return a session variable
     *
     * @param string $strKey The variable name
     *
     * @return mixed The variable value
     */
    
public function get($strKey)
    {
        return 
$this->arrSession[$strKey];
    }


    
/**
     * Set a session variable
     *
     * @param string $strKey   The variable name
     * @param mixed  $varValue The variable value
     */
    
public function set($strKey$varValue)
    {
        
$this->arrSession[$strKey] = $varValue;
    }


    
/**
     * Remove a session variable
     *
     * @param string $strKey The variable name
     */
    
public function remove($strKey)
    {
        unset(
$this->arrSession[$strKey]);
    }


    
/**
     * Return the session data as array
     *
     * @return array The session data
     */
    
public function getData()
    {
        return (array) 
$this->arrSession;
    }


    
/**
     * Set the session data from an array
     *
     * @param array $arrData The session data
     *
     * @throws Exception If $arrData is not an array
     */
    
public function setData($arrData)
    {
        if (!
is_array($arrData))
        {
            throw new 
Exception('Array required to set session data');
        }

        
$this->arrSession $arrData;
    }


    
/**
     * Append data to the session
     *
     * @param mixed $varData The data object or array
     *
     * @throws Exception If $varData is not an array or object
     */
    
public function appendData($varData)
    {
        if (
is_object($varData))
        {
            
$varData get_object_vars($varData);
        }

        if (!
is_array($varData))
        {
            throw new 
Exception('Array or object required to append session data');
        }

        
$this->arrSession array_merge($this->arrSession$varData);
    }
}
Онлайн: 0
Реклама