在CodeIgniter 3.x

时间:2015-12-02 23:02:52

标签: php session codeigniter-3

使用CodeIgniter 3.0.3,文档指出可以通过几种不同的方式检索会话数据,包括$_SESSION['item']$this->session->item。这是真的。无论我如何设置会话变量,我都看到我可以双向回应这个值。

现在,填充了该会话变量后,我可以检查这样的空状态:if(empty($_SESSION['item'])),它的评估结果为bool(false),就像我期望的那样。但是,如果我以这种方式检查相同的会话变量:if(empty($this->session->item))它的计算结果为bool(true),这不是我所期望的(因为我可以在下一行回显它的值)。为什么这两种不同的检查空状态的方式被不同地评估?

1 个答案:

答案 0 :(得分:0)

这是由于empty()的工作原理。比较这句话:

  

空($ registry-> notEmpty)的结果有点未触动,因为该值显然已设置且非空。这是因为在这些情况下,empty()函数使用__isset()魔法功能。虽然在上面的文档中已经注意到了,但我认为值得一提的更详细,因为行为并不简单。为了获得所需的(exxted?)结果,你需要在你的类中添加__isset()魔术函数:

(摘自php.net:http://php.net/manual/en/function.empty.php,来自用户Janci的评论)