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

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

點(diǎn)擊這里在線咨詢客服
新站提交
  • 網(wǎng)站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會(huì)員:747

確保 PHP 中結(jié)構(gòu)良好的 Switch 命令

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

缺少默認(rèn)條目

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

default應(yīng)始終存在。事實(shí)上,命令match是 的替代版本switch,當(dāng)它無法匹配任何case, 并且default缺少 時(shí),它會(huì)引發(fā)異常。

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

登錄后復(fù)制

default服務(wù)于不同的目的:

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

    登錄后復(fù)制

    始終確保交換機(jī)有默認(rèn)值。

    重復(fù)案例

    檢查switch陳述中是否有重復(fù)案例是有回報(bào)的。PHP 只處理它遇到的第一種情況,忽略其他情況。這會(huì)導(dǎo)致死代碼,開關(guān)中的一些分支將被忽略并且永遠(yuǎn)不會(huì)被使用。

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

    登錄后復(fù)制

    重復(fù)的情況經(jīng)常發(fā)生在很長的案例列表中。

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

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

    登錄后復(fù)制

    仔細(xì)檢查案例值并刪除重復(fù)項(xiàng)。

    重復(fù)的代碼塊

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

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

    登錄后復(fù)制

    枚舉案例的使用

    PHP 內(nèi)置了對(duì)枚舉的支持。枚舉的重要優(yōu)點(diǎn)之一是其有限性。它們代表選項(xiàng)的完整集合,并且不存在其他選項(xiàng)。這使得檢查 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');
    }
     
    ?>

    登錄后復(fù)制

    通過簡(jiǎn)單開關(guān)進(jìn)行優(yōu)化

    PHP 7.2 引入了針對(duì)switch.

    在此之前,PHP 會(huì)逐個(gè)檢查每個(gè)案例,并在找到匹配值后立即停止。在 PHP 7.2 及更高版本中,當(dāng)大小寫值是簡(jiǎn)單文字時(shí),PHP 會(huì)為它們?cè)O(shè)置一個(gè)查找表。然后,PHP 立即跳轉(zhuǎn)到正確的情況,并繞過所有其他不匹配的情況。

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

    登錄后復(fù)制

    當(dāng)所有情況都是簡(jiǎn)單值時(shí),就會(huì)發(fā)生簡(jiǎn)單切換,可以直接與傳入變量進(jìn)行比較。

    如果開關(guān)混合了表達(dá)式和簡(jiǎn)單值,建議將簡(jiǎn)單文字放在第一個(gè)開關(guān)中switch,并將其他文字放在第二個(gè)開關(guān)中。

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

    登錄后復(fù)制

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

    總結(jié)

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

    以上就是PHP中實(shí)用的開關(guān)命令的詳細(xì)內(nèi)容,更多請(qǐng)關(guān)注www.92cms.cn其它相關(guān)文章!

分享到:
標(biāo)簽:PHP 命令 實(shí)用 開關(guān)
用戶無頭像

網(wǎng)友整理

注冊(cè)時(shí)間:

網(wǎng)站:5 個(gè)   小程序:0 個(gè)  文章:12 篇

  • 51998

    網(wǎng)站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會(huì)員

趕快注冊(cè)賬號(hào),推廣您的網(wǎng)站吧!
最新入駐小程序

數(shù)獨(dú)大挑戰(zhàn)2018-06-03

數(shù)獨(dú)一種數(shù)學(xué)游戲,玩家需要根據(jù)9

答題星2018-06-03

您可以通過答題星輕松地創(chuàng)建試卷

全階人生考試2018-06-03

各種考試題,題庫,初中,高中,大學(xué)四六

運(yùn)動(dòng)步數(shù)有氧達(dá)人2018-06-03

記錄運(yùn)動(dòng)步數(shù),積累氧氣值。還可偷

每日養(yǎng)生app2018-06-03

每日養(yǎng)生,天天健康

體育訓(xùn)練成績(jī)?cè)u(píng)定2018-06-03

通用課目體育訓(xùn)練成績(jī)?cè)u(píng)定