ThinkPHP5 工具类(三:Session 类)

  • A+
所属分类:PHP ThinkPHP5

由于PHP自带的session销毁采用GC的销毁,具有诸多弊病,如无法及时清理过期session,所以最好通过程序来判断session是否过期。

tp5的 session类说明文档: https://www.kancloud.cn/manual/thinkphp5/126166

定义Session类

namespace app\common\toole;

use think\Session as tpSession;
use think\Config;
use think\Loader;
use think\Request;
use think\Exception;

class Session extends tpSession
{
    
}

Session 存储方法(重新set方法)

/**
 * Session 存储方法
 * @param string $name 变量名 
 * @param mixed $value 要存储的数组/字符串
 * @param string $prefix 作用域/模块名
 * @static
 */
public static function set($name, $value = '', $prefix = null)
{
    if (is_array($value))
    {
        $value = self::setArr($value);
    } else
    {
        $value = self::setString($value);
    }
    parent::set($name, $value, self::getPrefix($prefix));
}

Session存储字符串

/**
 * Session 拼装字符串
 */
public static function setString($value)
{
    $data['value'] = $value;
    $data['expire'] = time() + Config::get("session.session_expire");
    return $data;
}

Session存储数组

 /**
  * Session 拼装数组
  */
public static function setArr($value)
{
    $data['expire'] = time() + Config::get("session.session_expire");
    $data['value'] = $value;
    return $data;
}

Session 获取字符串

/**
 * Session 获取字符串
 * @param string $name 变量名
 * @param string $prefix 作用域
 */
public static function get($name = '', $prefix = null)
{
    $data = parent::get($name, self::getPrefix($prefix));
    if ($data['expire'] < time())
    {
        parent::delete($name);
        return null;
    } else
    {
        return $data['value'];
    }
}

Session获取数组

/**
 * Session 获取数组值
 * @param string $name 数组索引值
 * @param string $set_name 数组存储的变量名
 * @param string $prefix 作用域
 */
public static function getArr($name = '', $set_name = '', $prefix = '')
{
    $data = parent::get($set_name, self::getPrefix($prefix));
    if ($data['expire'] < time())
    {
        parent::delete($set_name);
        return null;
    } else if (isset($data['value'][$name]))
    {
        return $data['value'][$name];
    } else
    {
        return null;
    }
}

Session 获取作用域

protected static function getPrefix($prefix)
{
    if (empty($prefix))
    {
        $prefix = Request::instance()->module();
    }
    return $prefix;
}

Session 清空数据

/**
 * Session 清空
 * @param string $prefix 作用域
 */
public static function clear($prefix = null)
{
    parent::clear(self::getPrefix($prefix));
}

Session 删除数据

/**
 * 删除session数据
 * @param string|array  $name session名称
 * @param string|null   $prefix 作用域(前缀)
 * @return void
 */
public static function delete($name, $prefix = null)
{
    parent::delete($name, self::getPrefix($prefix));
}

avatar

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: