Just Blog about nothing

9Июнь/11Off

Менеджер сессий

Класс менеджера сессий, входящий в GMFramework. Класс написан linblow (http://php.net/manual/ru/function.session-start.php), я только немного его изменял.

/**
 * Use the static method getInstance to get the object.
 * @package ru.vbinc.gm.framework.utils
 * @author linblow (edited by GreyMag)
 * from PHP.net
 *
 */
class Session
{
    const SESSION_STARTED = true;
    const SESSION_NOT_STARTED = false;

    // THE only instance of the class
    private static $_instance;

    /**
    *    Returns THE instance of 'Session'.
    *    The session is automatically initialized if it wasn't.
    *
    *    @return Session
    **/

    public static function getInstance()
    {
        if ( !isset(self::$_instance))
        {
            self::$_instance = new Session();
        }

        self::$_instance->startSession();

        return self::$_instance;
    }

    // The state of the session
    private $_sessionState = self::SESSION_NOT_STARTED;

    private function __construct() {}

    /**
    *    (Re)starts the session.
    *
    *    @return    bool    TRUE if the session has been initialized, else FALSE.
    **/

    public function startSession()
    {
        if ( $this->_sessionState == self::SESSION_NOT_STARTED )
        {
            $this->_sessionState = session_start();
        }

        return $this->_sessionState;
    }

    /**
     * Получить значение переменной по имени
     * @param mixed $var
     */
    public function get( $var )
    {
    	return $this->$var;
    } 

    /**
     * Задать значение переменной
     * @param mixed $var
     */
    public function set( $var, $value )
    {
        $this->$var = $value;
    }

    /**
     * Уничтожить переменную по имени
     * @param $var
     */
    public function unsetVar( $var )
    {
        unset( $this->$var );
    } 

    /**
    *    Stores datas in the session.
    *    Example: $instance->foo = 'bar';
    *
    *    @param    name    Name of the datas.
    *    @param    value    Your datas.
    *    @return    void
    **/

    public function __set( $name , $value )
    {
        $_SESSION[$name] = $value;
    }

    /**
    *    Gets datas from the session.
    *    Example: echo $instance->foo;
    *
    *    @param    name    Name of the datas to get.
    *    @return    mixed    Datas stored in session.
    **/

    public function __get( $name )
    {
        if ( isset($_SESSION[$name]))
        {
            return $_SESSION[$name];
        }
    }

    public function __isset( $name )
    {
        return isset($_SESSION[$name]);
    }

    public function __unset( $name )
    {
        unset( $_SESSION[$name] );
    }

    /**
    *    Destroys the current session.
    *
    *    @return    bool    TRUE is session has been deleted, else FALSE.
    **/

    public function destroy()
    {
        if ( $this->_sessionState == self::SESSION_STARTED )
        {
            $this->_sessionState = !session_destroy();
            unset( $_SESSION );

            return !$this->_sessionState;
        }

        return false;
    }
}

Пример использования:

// получаем инстанцию класаа
$data = Session::getInstance();

// помещаем необходимые данные в переменные,
// которые будут сохранены в сессии
$data->login = 'User';
$data->userId = 1;

// распечатываем значения переменных, сохранённых в сессии
printf( '<p>Пользовать %s имеет идентификатор %d.</p>', $data->login, $data->userId );

// уничтожаем сессию
$data->destroy();

 

Метки записи: , , Комментарии
Комментарии (0) Пинги (0)

Извините, комментировать здесь запрещено.

Trackbacks are disabled.

Social Widgets powered by AB-WebLog.com.