[英]Refactoring a header location function
該功能應該是:
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');
}
我知道代碼基本上是一樣的,但重構這個的最 “正確方法”是什么?
第二種方法似乎更加正確和靈活。
如果$ _SESSION ['user_auth']返回false,則無論如何都必須檢查響應。
將函數重命名為更像is_logged_in的函數可能更具可讀性,並且可以理解函數執行/返回的內容。
我將使用第二種方法。 一般來說,函數應該是一個黑盒子...你提供參數,它們返回一個值或通過引用修改一些東西,或者如果它們是一個對象的方法,它們可能會修改那些對象的狀態或另一個對象的狀態。 如果您需要根據返回值或修改的對象/參數采取操作,那么應該在主控制邏輯中完成。 顯然有例外,但這對我來說是一般規則。
如果您需要發送其他特定標頭,並且您希望將其封裝在一個函數中,那么這樣就可以了,但我會說它與邏輯檢查是否分開,如果它是一個經過身份驗證的會話。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.