session类改为自动初始化 便于各个模块自行初始化

This commit is contained in:
thinkphp
2016-02-19 11:35:41 +08:00
parent e7ad730317
commit 36fd836a71
2 changed files with 15 additions and 16 deletions

View File

@@ -66,11 +66,6 @@ class App
} }
} }
// 启动session CLI 不开启
if (!IS_CLI && $config['use_session']) {
Session::init($config['session']);
}
if (empty(self::$dispatch['type'])) { if (empty(self::$dispatch['type'])) {
// 未指定调度类型 则进行URL路由检测 // 未指定调度类型 则进行URL路由检测
self::route($config); self::route($config);

View File

@@ -14,10 +14,10 @@ class Session
{ {
protected static $prefix = ''; protected static $prefix = '';
protected static $active = false;
/** /**
* 设置或者获取session作用域前缀 * 设置或者获取session作用域前缀
*
* @param string $prefix * @param string $prefix
* @return string|void * @return string|void
*/ */
@@ -38,6 +38,9 @@ class Session
*/ */
public static function init(array $config = []) public static function init(array $config = [])
{ {
if (empty($config)) {
$config = Config::get('session');
}
// 记录初始化信息 // 记录初始化信息
APP_DEBUG && Log::record('[ SESSION ] INIT ' . var_export($config, true), 'info'); APP_DEBUG && Log::record('[ SESSION ] INIT ' . var_export($config, true), 'info');
$isDoStart = false; $isDoStart = false;
@@ -93,12 +96,12 @@ class Session
} }
if ($isDoStart) { if ($isDoStart) {
session_start(); session_start();
self::$active = true;
} }
} }
/** /**
* session设置 * session设置
*
* @param string $name session名称 * @param string $name session名称
* @param mixed $value session值 * @param mixed $value session值
* @param string|null $prefix 作用域(前缀) * @param string|null $prefix 作用域(前缀)
@@ -106,6 +109,9 @@ class Session
*/ */
public static function set($name, $value = '', $prefix = null) public static function set($name, $value = '', $prefix = null)
{ {
if (!self::$active) {
self::init();
}
$prefix = !is_null($prefix) ? $prefix : self::$prefix; $prefix = !is_null($prefix) ? $prefix : self::$prefix;
if (strpos($name, '.')) { if (strpos($name, '.')) {
// 二维数组赋值 // 二维数组赋值
@@ -124,13 +130,15 @@ class Session
/** /**
* session获取 * session获取
*
* @param string $name session名称 * @param string $name session名称
* @param string|null $prefix 作用域(前缀) * @param string|null $prefix 作用域(前缀)
* @return mixed * @return mixed
*/ */
public static function get($name = '', $prefix = null) public static function get($name = '', $prefix = null)
{ {
if (!self::$active) {
self::init();
}
$prefix = !is_null($prefix) ? $prefix : self::$prefix; $prefix = !is_null($prefix) ? $prefix : self::$prefix;
if ('' == $name) { if ('' == $name) {
// 获取全部的session // 获取全部的session
@@ -156,7 +164,6 @@ class Session
/** /**
* 删除session数据 * 删除session数据
*
* @param string $name session名称 * @param string $name session名称
* @param string|null $prefix 作用域(前缀) * @param string|null $prefix 作用域(前缀)
* @return void * @return void
@@ -182,7 +189,6 @@ class Session
/** /**
* 清空session数据 * 清空session数据
*
* @param string|null $prefix 作用域(前缀) * @param string|null $prefix 作用域(前缀)
* @return void * @return void
*/ */
@@ -198,15 +204,16 @@ class Session
/** /**
* 判断session数据 * 判断session数据
*
* @param string $name session名称 * @param string $name session名称
* @param string|null $prefix * @param string|null $prefix
*
* @return bool * @return bool
* @internal param mixed $value session值 * @internal param mixed $value session值
*/ */
public static function has($name, $prefix = null) public static function has($name, $prefix = null)
{ {
if (!self::$active) {
self::init();
}
$prefix = !is_null($prefix) ? $prefix : self::$prefix; $prefix = !is_null($prefix) ? $prefix : self::$prefix;
if (strpos($name, '.')) { if (strpos($name, '.')) {
// 支持数组 // 支持数组
@@ -219,7 +226,6 @@ class Session
/** /**
* 暂停session * 暂停session
*
* @return void * @return void
*/ */
public static function pause() public static function pause()
@@ -230,17 +236,16 @@ class Session
/** /**
* 启动session * 启动session
*
* @return void * @return void
*/ */
public static function start() public static function start()
{ {
session_start(); session_start();
self::$active = true;
} }
/** /**
* 销毁session * 销毁session
*
* @return void * @return void
*/ */
public static function destroy() public static function destroy()
@@ -252,7 +257,6 @@ class Session
/** /**
* 重新生成session_id * 重新生成session_id
*
* @return void * @return void
*/ */
private static function regenerate() private static function regenerate()