[top-think/think]设置session.auto_start,并不自动初始化session.

2023-12-27 865 views
1
//config.php
    'session'                => [
        'id'             => '',
        'var_session_id' => '', // SESSION_ID的提交变量,解决flash上传跨域
        'prefix'         => 'think',
        'type'           => '',
        'auto_start'     => true,
    ],
//index.php
print_r($_SESSION);
$to    = I("session.user", "guests");

相反,如果在上面两句之前执行一次session("");下面的就好用.

回答

5

惰性加载,顾名思义,要你手动启动嘛! \think\Session::init() 就好了

8

@hugtale 这我当然知道了,我只是说因为session没有init所以出的错... 但问题在于设置session.auto_start的意义何在呢?

7

在第一次调用session类的时候 会自动初始化 如果直接操作$_SESSION数组则需要 自己手动初始化 这样的好处是便于每个 模块按照自己的需求初始化

0

@liu21st 使用I方法,根本不会自动初始化.

//file:application/index/controller/Index.php
<?php
namespace app\www\controller;

use app\commons\controller\Init;
use think\Controller;

class Index extends Init
{
    public function index()
    {
        I("session.user", "guests");
        return $this->fetch();
    }
}

error code:

[8] ErrorException in Input.php line 129
Undefined variable: _SESSION
0

I方法并没有调用session类的啊 是取的 $_SESSION

9

@liu21st 明白了.是我理解的不够.