PHP8 新出的一個文法很好用,就是 match 語句。match 語句跟原來的 switch 類似,不過比 switch 更加的嚴格和友善
原來的 switch 語句代碼如下:
1 function getStr( $strType ){
2
3 switch( $strType ){
4
5 case 1:
6
7 $str = 'one';
8
9 break;
10
11 case 2:
12
13 $str = 'two';
14
15 break;
16
17 default :
18
19 $str = 'error';
20
21 }
22
23 return $str;
24
25 }
26
27 //當輸入數值 1 和 字元 '1' 不會進行類型判斷
28
29 echo getStr(1); //one
30
31 echo getStr('1'); //one
32
33 echo getStr(2); //two
34
35 echo getStr('2'); //two
換成 match 語句後:
function getStr( $strType ){
return match( $strType ){
1 => 'number one',
'1' => 'string one',
default => 'error',
};
}
//可以看出輸入數值 1 跟字元 `1` 傳回的值是不同的
echo getStr(1); //number one
echo getStr('1'); //string one
1 function getStr( $strType ){
2 return match( $strType ){
3 1 => (function(){
4 return 'number one';
5 })(),
6 '1' => (function(){
7 return 'string one';
8 })(),
9 default => 'error',
10 };
11 }
12 //雖然這種代碼風格也能行的通,但是總感覺哪裡怪怪的
13
14 echo getStr(1); //number one
15 echo getStr('1'); //string one
PHP8 新出的文法 match 相比原來的 switch 文法更加的友善和嚴格
路是自己走出來的,而不是選出來的。