codeigniter库中的奇怪行为

时间:2011-08-05 14:01:16

标签: php codeigniter

我已经创建了一个非常基本的库,只有一个函数来检查用户是否现在已经登录。

<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed'); 

class Lib {

    public function is_logged_in()
    {
        $CI =& get_instance();
        if($CI->session->userdata('uid') === FALSE)
        {
            return FALSE;
        }
        else
        {
            return TRUE;
        }
    }
}

/* End of file Lib.php */

如果我从控制器调用该函数,代码肯定会运行,如果没有登录,则会进入if语句。我可以添加一个echo来测试代码是否已经执行,但永远不会返回任何内容。如果我将返回更改为数字,则不返回任何内容。如果我将返回更改为字符串,那么只有这样才能实际返回。我正在调用像$this->lib->is_logged_in()这样的函数,并将库添加到autoload.php文件中。

当函数退出时,肯定会执行返回。错误报告设置为E_ALL。为什么这不起作用?

(也是的,我确实认识到这个功能还不完整和安全。)

1 个答案:

答案 0 :(得分:1)

  

您如何确定退货已执行? - NullUserException

     

@NullUserException:代码块退出。我可以在返回之前回显并且它将会运行,我可以在任何一个之后回显它不会。 - 旋风

如果您在函数中echo之后尝试return某些,那么它将无法按设计运行,我认为这可能适用于所有语言。 return之后的任何内容都不会被执行。它将被解析,但不会被执行。

如果未正确加载var_dump($this->lib->is_logged_in())

bool(true)应该为您提供bool(false)lib,或者“尝试获取非对象属性”错误。

除非您没有与我们分享,否则该功能应按预期工作。

如果您仍有疑问,请将返回值分配给变量,然后在var_dump()之前return变量。应该是相同的结果。

编辑:对不起,我在长篇评论中错过了这个:

  

var_dump()显示确实返回了false,为什么我不能简单地回显它

我不相信echo'ing FALSE会给你任何output,但回复TRUE会给你1

这与Codeigniter没有任何关系。

出于所有实际目的,没有充分的理由echo这个函数的返回值,或者你期望布尔返回值的任何东西。如果它返回你期望的值,那么它正在工作。