From 36fd836a7176f3789378e3528b32e6385809b83e Mon Sep 17 00:00:00 2001 From: thinkphp Date: Fri, 19 Feb 2016 11:35:41 +0800 Subject: [PATCH] =?UTF-8?q?session=E7=B1=BB=E6=94=B9=E4=B8=BA=E8=87=AA?= =?UTF-8?q?=E5=8A=A8=E5=88=9D=E5=A7=8B=E5=8C=96=20=E4=BE=BF=E4=BA=8E?= =?UTF-8?q?=E5=90=84=E4=B8=AA=E6=A8=A1=E5=9D=97=E8=87=AA=E8=A1=8C=E5=88=9D?= =?UTF-8?q?=E5=A7=8B=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- library/think/App.php | 5 ----- library/think/Session.php | 26 +++++++++++++++----------- 2 files changed, 15 insertions(+), 16 deletions(-) diff --git a/library/think/App.php b/library/think/App.php index bb8063f9..3aad92a7 100644 --- a/library/think/App.php +++ b/library/think/App.php @@ -66,11 +66,6 @@ class App } } - // 启动session CLI 不开启 - if (!IS_CLI && $config['use_session']) { - Session::init($config['session']); - } - if (empty(self::$dispatch['type'])) { // 未指定调度类型 则进行URL路由检测 self::route($config); diff --git a/library/think/Session.php b/library/think/Session.php index 853413b4..603e2c3c 100644 --- a/library/think/Session.php +++ b/library/think/Session.php @@ -14,10 +14,10 @@ class Session { protected static $prefix = ''; + protected static $active = false; /** * 设置或者获取session作用域(前缀) - * * @param string $prefix * @return string|void */ @@ -38,6 +38,9 @@ class Session */ public static function init(array $config = []) { + if (empty($config)) { + $config = Config::get('session'); + } // 记录初始化信息 APP_DEBUG && Log::record('[ SESSION ] INIT ' . var_export($config, true), 'info'); $isDoStart = false; @@ -93,12 +96,12 @@ class Session } if ($isDoStart) { session_start(); + self::$active = true; } } /** * session设置 - * * @param string $name session名称 * @param mixed $value session值 * @param string|null $prefix 作用域(前缀) @@ -106,6 +109,9 @@ class Session */ public static function set($name, $value = '', $prefix = null) { + if (!self::$active) { + self::init(); + } $prefix = !is_null($prefix) ? $prefix : self::$prefix; if (strpos($name, '.')) { // 二维数组赋值 @@ -124,13 +130,15 @@ class Session /** * session获取 - * * @param string $name session名称 * @param string|null $prefix 作用域(前缀) * @return mixed */ public static function get($name = '', $prefix = null) { + if (!self::$active) { + self::init(); + } $prefix = !is_null($prefix) ? $prefix : self::$prefix; if ('' == $name) { // 获取全部的session @@ -156,7 +164,6 @@ class Session /** * 删除session数据 - * * @param string $name session名称 * @param string|null $prefix 作用域(前缀) * @return void @@ -182,7 +189,6 @@ class Session /** * 清空session数据 - * * @param string|null $prefix 作用域(前缀) * @return void */ @@ -198,15 +204,16 @@ class Session /** * 判断session数据 - * * @param string $name session名称 * @param string|null $prefix - * * @return bool * @internal param mixed $value session值 */ public static function has($name, $prefix = null) { + if (!self::$active) { + self::init(); + } $prefix = !is_null($prefix) ? $prefix : self::$prefix; if (strpos($name, '.')) { // 支持数组 @@ -219,7 +226,6 @@ class Session /** * 暂停session - * * @return void */ public static function pause() @@ -230,17 +236,16 @@ class Session /** * 启动session - * * @return void */ public static function start() { session_start(); + self::$active = true; } /** * 销毁session - * * @return void */ public static function destroy() @@ -252,7 +257,6 @@ class Session /** * 重新生成session_id - * * @return void */ private static function regenerate()