CodeIgniter自定义函数

时间:2011-09-18 08:43:22

标签: php mysql codeigniter

要检查用户是否已登录,我需要提取相当长的if语句,然后根据用户是否登录重定向用户。我认为像

这样的自定义函数
if (logged_in()) { redirect }

会更有用。但是为我建立一个函数库似乎是不必要的。我该怎么办?

2 个答案:

答案 0 :(得分:1)

  

我需要完成一个非常长的if语句,但是为一个函数构建一个库似乎是不必要的

它根本不是“不必要的”,也不是严格“必要”,但为此创建一个库/类可能是一个好主意。

如果你需要使用很多逻辑,例如“一个很长的if语句”,使用类可以帮助你将它分解成更小的部分并使逻辑更易于管理。如果你只需要调用类的一个公共方法,比如$this->auth->is_logged_in(),那就没有错,那么你可以创建一个小的帮助文件或包装器函数来调用方法,并将重定向逻辑放在那里而不是班级。也许是这样的事情:

// Make sure your "auth" library is autoloaded or load it here
function logged_in($redirect = TRUE)
{
    $CI =& get_instance();
    $logged_in = $CI->auth->is_logged_in();

    // Redirect the user...
    if ( ! $logged_in AND $redirect)
    {
        redirect('somewhere/else/');
    }

    // Or just check if they are logged in
    return $logged_in;
}

使用类/库有许多好处,并且使用像用户授权这样复杂的东西,您将从中受益很多,特别是一旦您的项目开始扩展并且您需要更多实用程序。

答案 1 :(得分:0)

虽然通常会为与您的应用程序无关的解耦功能保留帮助程序,但我认为在这种情况下它们是合适的。只需创建一个名为is_logged_in的辅助函数。

要了解有关帮助者的更多信息,请访问文档:

http://codeigniter.com/user_guide/general/helpers.html