升级 Session
文档
变更内容
只变更了少量内容,例如方法名和类的加载方式。
数据库驱动中 session 表的定义已变更。
升级指南
凡是使用 Session 类的地方,都将
$this->load->library('session');替换为$session = session();。从这里开始,凡是以
$this->session开头的每一行,都要替换为$session,并使用新的方法名。访问 session 数据时,使用
$session->item或$session->get('item'),而不要使用 CI3 的语法$this->session->name。设置数据时,使用
$session->set($array);,而不要使用$this->session->set_userdata($array);。移除数据时,使用
unset($_SESSION['some_name']);或$session->remove('some_name');,而不要使用$this->session->unset_userdata('some_name');。将 session 数据标记为 flashdata 时(它只会在下一次请求中可用),使用
$session->markAsFlashdata('item');,而不要使用$this->session->mark_as_flash('item');。
如果使用数据库驱动,则需要重新创建 session 表。参见 DatabaseHandler 驱动程序。
代码示例
CodeIgniter 3.x 版本
<?php
$this->load->library('session');
$_SESSION['item'];
$this->session->item;
$this->session->userdata('item');
CodeIgniter 4.x 版本
<?php
$session = session();
$_SESSION['item']; // But we do not recommend to use superglobal directly.
$session->get('item');
$session->item;
session('item');