日日操夜夜添-日日操影院-日日草夜夜操-日日干干-精品一区二区三区波多野结衣-精品一区二区三区高清免费不卡

公告:魔扣目錄網為廣大站長提供免費收錄網站服務,提交前請做好本站友鏈:【 網站目錄:http://www.ylptlb.cn 】, 免友鏈快審服務(50元/站),

點擊這里在線咨詢客服
新站提交
  • 網站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會員:747

確保 PHP 中結構良好的 Switch 命令

在 PHP 中,switch語句是控制程序流程的強大工具,尤其是在處理多個條件分支時。然而,實現干凈高效的轉換也有其自身的障礙。這篇文章探討了檢查“switch”命令質量的基本技巧和實踐,以確保代碼質量并優化其性能。

缺少默認條目

首先要考慮的是該switch聲明是否包含default案例。Adefault充當后備選項,確保在沒有定義的case匹配項時執行代碼。

default應始終存在。事實上,命令match是 的替代版本switch,當它無法匹配任何case, 并且default缺少 時,它會引發異常。

<?php
switch($a) {
    case 0:
      echo 'A';
      break;
       
    case 1:
      echo 'A';
      break;
}
 
?>

登錄后復制

default服務于不同的目的:

  • 將所有其他情況一并處理。這是當有限的案例列表可用時,并且該列表之外的任何事情都可以以單一方式處理。
  • 如果達到則引發錯誤。在這種情況下,前面的上下文switch可確保處理有限的案例列表。然后,每當合法的情況之外的情況到達命令時,就應該引發異常。
    <?php
    switch($a) {
        case 0:
          echo 'A';
          break;
           
        case 1:
          echo 'A';
          break;
           
        default:
          throw new MyException('This should be zero or one');
    }
     
    ?>

    登錄后復制

    始終確保交換機有默認值。

    重復案例

    檢查switch陳述中是否有重復案例是有回報的。PHP 只處理它遇到的第一種情況,忽略其他情況。這會導致死代碼,開關中的一些分支將被忽略并且永遠不會被使用。

    <?php
    switch($a) {
        case 'gif':
            // doSomething() and break
           
        case 'jpeg':
        case 'jpg':
            // doSomething() and break
     
        case 'png':
            // doSomething() and break
     
        case 'gif':
            // doSomething() and break
           
        default:
          throw new MyException('This should be an image format');
    }
     
    ?>

    登錄后復制

    重復的情況經常發生在很長的案例列表中。

    當實際值被常量名稱或 PHP 的類型雜耍隱藏時,也會發生這種情況。確實,switch使用了寬松的比較風格,有些文字實際上可能是相同的。

    <?php
     
    // $a in [null, false, '', 0]
    switch($a) {
        // Most of the cases ends here, except 0
        // because it is the first encountered
        case '':
            print 'Empty string';break;
     
        // 0 goes here
        case 0:
            print 'Zero';break;
           
        case false:
            print 'false';break;
     
        case null:
            print 'null';break;
           
        default:
          throw new MyException('This should be empty');
    }
     
    ?>

    登錄后復制

    仔細檢查案例值并刪除重復項。

    重復的代碼塊

    另一個常見問題是不同 case 分支中的代碼塊重復。這種冗余會使您的系統變得臃腫switch,并且使將來的更新變得困難。考慮重構代碼以消除重復并合并案例。

    <?php
     
    switch($a) {
        case 'john':
            $b = 0; break;
     
        case 'henry':
            $b = 10; break;
     
        // duplicate of case 'john'
        case 'julia':
            $b = 0; break;
     
        case 'jeroen':
            $b = 30; break;
           
        default:
          throw new MyException('This is an unexpected name');
    }
     
    ?>

    登錄后復制

    枚舉案例的使用

    PHP 內置了對枚舉的支持。枚舉的重要優點之一是其有限性。它們代表選項的完整集合,并且不存在其他選項。這使得檢查 a 是否switch涵蓋了所有可能的情況變得很容易。

    <?php
     
    enum formats {
        case GIF;
        case JPG;
        case PNG;
    }
     
    switch($a) {
        case formats::GIF:
            // doSomething() and break;
     
        case formats::PNG:
            // doSomething() and break;
             
        // We are missing one case : JPG!
     
        // Unknown cases triggers an exception lazily (only if reached)
        case formats::TIFF:
            // doSomething() and break;
     
        default:
          throw new MyException('Unknown image format');
    }
     
    ?>

    登錄后復制

    通過簡單開關進行優化

    PHP 7.2 引入了針對switch.

    在此之前,PHP 會逐個檢查每個案例,并在找到匹配值后立即停止。在 PHP 7.2 及更高版本中,當大小寫值是簡單文字時,PHP 會為它們設置一個查找表。然后,PHP 立即跳轉到正確的情況,并繞過所有其他不匹配的情況。

    <?php
     
    switch($a) {
        case 1:
            // doSomething() and break;
     
        case 2:
            // doSomething() and break;
             
        default:
          throw new MyException('Unknown image format');
    }
     
    ?>

    登錄后復制

    當所有情況都是簡單值時,就會發生簡單切換,可以直接與傳入變量進行比較。

    如果開關混合了表達式和簡單值,建議將簡單文字放在第一個開關中switch,并將其他文字放在第二個開關中。

    <?php
     
    switch($a) {
        case 1:
            // doSomething() and break;
     
        case 2:
            // doSomething() and break;
             
        default:
            switch($a) {
                case $b + 2:
                    // doSomething() and break;
     
            case strtolower($a):
                // doSomething() and break;
             
            default:
                throw new MyException('Unknown case');
        }
    }
     
    ?>

    登錄后復制

    以不同的方式處理它們也可能更方便,例如使用先前的條件。

    總結

    總之,switchPHP 中結構良好的語句可以極大地提高代碼的清晰度、可維護性和性能。通過檢查缺失的默認條目、消除重復的情況和代碼塊、利用類似枚舉的結構以及優化復雜的開關,您可以確保您的語句仍然是switch任何 PHP 代碼庫的高效且有效的部分。

    以上就是PHP中實用的開關命令的詳細內容,更多請關注www.92cms.cn其它相關文章!

分享到:
標簽:PHP 命令 實用 開關
用戶無頭像

網友整理

注冊時間:

網站:5 個   小程序:0 個  文章:12 篇

  • 51998

    網站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會員

趕快注冊賬號,推廣您的網站吧!
最新入駐小程序

數獨大挑戰2018-06-03

數獨一種數學游戲,玩家需要根據9

答題星2018-06-03

您可以通過答題星輕松地創建試卷

全階人生考試2018-06-03

各種考試題,題庫,初中,高中,大學四六

運動步數有氧達人2018-06-03

記錄運動步數,積累氧氣值。還可偷

每日養生app2018-06-03

每日養生,天天健康

體育訓練成績評定2018-06-03

通用課目體育訓練成績評定