CodeIgniter 3 - 具有 PHP 空函数的会话项 getter

CodeIgniter 3 - Session item getter with PHP empty function

我刚刚注意到使用 CodeIgniter 3 会话系统时有些奇怪,我想知道这是一个问题还是 PHP.

的正常现象

为了解释,我初始化了这个变量:

$this->session->connected_client_id = 9;

当我这样做时:

$id = $this->session->connected_client_id
// Testing using "get_userdata" function
if (empty($this->session->get_userdata('connected_client_id'))) {
    echo "EMPTY $id";
} else {
    echo "NOT EMPTY $id";
}

没关系,我收到了:NOT EMPTY 9

但是,当我这样做时:

$id = $this->session->connected_client_id
// Testing using the CodeIgniter 3 session getter
if (empty($this->session->connected_client_id))) {
    echo "EMPTY $id";
} else {
    echo "NOT EMPTY $id";
}

NOT 好的,我得到:EMPTY 9

当我这样做的时候:

$id = $this->session->connected_client_id
// Testing using a variable as intermediate from the CI3 session getter
if (empty($id))) {
    echo "EMPTY $id";
} else {
    echo "NOT EMPTY $id";
}

没关系,我收到了:NOT EMPTY 9

我正在使用一个变量作为前一个 getter 的中间变量,它返回 "EMPTY 9" ...
有人对此有解释吗?没有这个 "empty trouble" 有没有正确的方法来实现这个检查?

在 PHP 给定 CI_Session class 代码的情况下,它...两者都是正常的,但在 CodeIgniter 中也是一个问题,因为这个特定的用例应该有效但没有。

此补丁将在下一个 CodeIgniter 版本 (3.0.6) 中修复它:https://github.com/bcit-ci/CodeIgniter/commit/2c10f60586faf59b9380608c5a9bf01ff2522483

但是,我倾向于建议直接访问 $_SESSION 数组 - 这就是库为您提供的。