簡體   English   中英

重構標頭位置功能

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM