重构标头位置功能

时间:2011-02-14 02:06:44

标签: php

这个功能应该是:

check_login_session()
{
   if (!isset[$_SESSION['user_auth']) )
   {
      header('Location: login.php');
   }
   else
   {
      #  check against database here?
      return $_SESSION['user_auth'];
   }
}

或者,如果在调用函数后发送标题:

check_login_session()
{
   if (!isset[$_SESSION['user_auth']) )
   {
      return false;
   }
   else
   {
      #  check against database here?
      return $_SESSION['user_auth'];
   }
}

所以,当它被调用时:

if (check_login_session === false)
{
   header('Location: login.php');
}

我知道代码的功能基本相同,但'正确的方法'是什么来重构它?

2 个答案:

答案 0 :(得分:1)

第二种方法似乎更加正确和灵活。

如果$ _SESSION ['user_auth']返回false,则无论如何都必须检查响应。

将函数重命名为更像is_logged_in的函数可能更具可读性,并且可以理解函数执行/返回的内容。

答案 1 :(得分:1)

我会使用第二种方法。一般来说,函数应该是一个黑盒子...你提供参数,它们返回一个值或通过引用修改一些东西,或者如果它们是一个对象的方法,它们可能会修改那些对象的状态或另一个对象的状态。如果您需要根据返回值或修改的对象/参数采取操作,那么应该在主控制逻辑中完成。显然有例外,但这对我来说是一般规则。

如果您需要发送其他特定标头,并且您希望将其封装在一个函数中,那么这样就可以了,但我会说它与逻辑检查分开,如果它是一个经过身份验证的会话。