session与__destruct的一段bug

继以前发现类析构函数__destruct不能处理exit和throw Exception后,最近又发现__destruct竟然不能写入session。
腾讯开放平台的PHP Oauth2.0 SDK工具中,Recorder.class.php中的类是用以贮存和读取数据的,其中有一段:

public function __construct(){
… …

if(empty($_SESSION['QC_userData'])){
self::$data = array();
} else {
self::$data = $_SESSION['QC_userData'];
}
}

public function __destruct(){
$_SESSION['QC_userData'] = self::$data;
# 上面这句使用echo session时没问题,但实际上并没有写入成功,不信可以另一一页查看能否读取’QC_userData’值
}

构造函数声明、处理数据,而析构函数最后将数据保存到session中,这程序写得清晰到位,但实际是不能运作的,大家依照5.2.17版本可以试一下!
另外,在php手册上也有一段:
class Example{

    function
__destruct(){
       
$_SESSION['test'] = true;
       
session_write_close();
    }

}
报告不能正常写入。
原文地址:https://www.cnblogs.com/sumsung753/p/3821492.html