我已经创建了一个非常基本的库,只有一个函数来检查用户是否现在已经登录。
<?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
。为什么这不起作用?
(也是的,我确实认识到这个功能还不完整和安全。)
答案 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
这个函数的返回值,或者你期望布尔返回值的任何东西。如果它返回你期望的值,那么它正在工作。