From 684ed543a6e3a671bfd5fb1fd12d671e795e60c1 Mon Sep 17 00:00:00 2001 From: thinkphp Date: Sat, 20 Aug 2016 11:50:21 +0800 Subject: [PATCH] =?UTF-8?q?=E6=94=B9=E8=BF=9BSession=E7=B1=BB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- library/think/Session.php | 30 +++++++++++++++++++++++++----- 1 file changed, 25 insertions(+), 5 deletions(-) diff --git a/library/think/Session.php b/library/think/Session.php index 1b419763..ee43bb77 100644 --- a/library/think/Session.php +++ b/library/think/Session.php @@ -17,6 +17,7 @@ use think\exception\ClassNotFoundException; class Session { protected static $prefix = ''; + protected static $init = null; /** * 设置或者获取session作用域(前缀) @@ -98,6 +99,22 @@ class Session } if ($isDoStart) { session_start(); + self::$init = true; + } else { + self::$init = false; + } + } + + /** + * session自动启动或者初始化 + * @return void + */ + public static function boot() + { + if (is_null(self::$init)) { + self::init(); + } elseif (false === self::$init) { + session_start(); } } @@ -110,7 +127,8 @@ class Session */ public static function set($name, $value = '', $prefix = null) { - !isset($_SESSION) && self::init(); + empty(self::$init) && self::boot(); + $prefix = !is_null($prefix) ? $prefix : self::$prefix; if (strpos($name, '.')) { // 二维数组赋值 @@ -135,7 +153,7 @@ class Session */ public static function get($name = '', $prefix = null) { - !isset($_SESSION) && self::init(); + empty(self::$init) && self::boot(); $prefix = !is_null($prefix) ? $prefix : self::$prefix; if ('' == $name) { // 获取全部的session @@ -167,7 +185,7 @@ class Session */ public static function delete($name, $prefix = null) { - !isset($_SESSION) && self::init(); + empty(self::$init) && self::boot(); $prefix = !is_null($prefix) ? $prefix : self::$prefix; if (strpos($name, '.')) { list($name1, $name2) = explode('.', $name); @@ -192,7 +210,7 @@ class Session */ public static function clear($prefix = null) { - !isset($_SESSION) && self::init(); + empty(self::$init) && self::boot(); $prefix = !is_null($prefix) ? $prefix : self::$prefix; if ($prefix) { unset($_SESSION[$prefix]); @@ -209,7 +227,7 @@ class Session */ public static function has($name, $prefix = null) { - !isset($_SESSION) && self::init(); + empty(self::$init) && self::boot(); $prefix = !is_null($prefix) ? $prefix : self::$prefix; if (strpos($name, '.')) { // 支持数组 @@ -240,6 +258,7 @@ class Session } session_unset(); session_destroy(); + self::$init = null; } /** @@ -260,5 +279,6 @@ class Session { // 暂停session session_write_close(); + self::$init = false; } }