2011-02-14 42 views
0

如果这种功能是:重构头定位功能

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'); 
} 

我知道代码基本上是一样的东西,但大部分是'正确的方式'来重构这个?

+0

你应该使用完整的URL,而不仅仅是一个文件名。 – 2011-02-14 02:11:30

回答

1

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

如果是这种情况,你需要发送额外的特定标题,所以你想封装在一个函数中,那就没问题,但我会说,从逻辑检查,如果它是一个验证的会话。

1

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

如果$ _SESSION ['user_auth']返回false,您将不得不检查响应。

将函数重命名为更类似于is_logged_in的函数可能更易读,并且可以理解该函数执行/返回的内容。