PHP8的一些新特性之Match

24K大白羊發表於2020-12-28

PHP8.0已經在2020年11月26日正式釋出了,除 JIT 帶來效能提升外,對於我們開發上,也有一些比較好的特性。

  • 之前我們在使用 Switch 的時候,每個分支都要寫 break 關鍵字或者 return 關鍵字,否則會導致程式 bug,而且也可以看得出,PHP7的判斷是非嚴格形式進行判斷的,比如下面的示例,在PHP7中 8.0 == ‘8.0’。
  • 在 PHP8 中則要簡潔的多,如果你的業務是簡單的單行執行,則直接使用 Match 方法會更方便,不需要 break 也不需要單獨定義變數儲存,因為方法會預設返回命中的結果,且判斷已經升級為嚴格模式進行比對了。

PHP 7

switch (8.0) {
  case '8.0':
    $result = "Oh no!";
    break;
  case 8.0:
    $result = "This is what I expected";
    break;
}
echo $result;  // Oh no!

PHP8

echo match (8.0) {
  '8.0' => "Oh no!",
  8.0 => "This is what I expected",
};
// This is what I expected

總結一下

  1. Match 是一個表示式,它可以儲存到變數中亦可以直接返回;不需要新申請臨時變數儲存值了。
  2. Match 分支僅支援單行,它不需要一個 break; 語句;如果是多行,那麼還是需要使用 Switch 來進行處理的。
  3. Match 使用嚴格比較;這個要處理好,否則會出現意想不到的bug。
本作品採用《CC 協議》,轉載必須註明作者和本文連結

相關文章