はじめに
今回はPHP8で追加された match 式について学習し、便利そうだと思ったので、共有もかねて記事としてまとめることにしました。
switch 文について
一般的に処理を行う条件を設定する構文として if 文が存在しますが、
別の構文として switch 文があります。
$type = 1;
switch ($type) {
case 0:
echo "利用する";
break;
case 1:
echo "利用しない";
break;
default:
echo "未設定";
}
上記は $type の値によって出力するメッセージを分岐させる処理となっています。
switch 文の注意すべき点として以下の内容があります。
- 比較方法が厳密でないこと
- 処理がわかりにくいこと
比較方法が厳密でないこと
case の部分で値の比較を行っていますが、型の比較までは行っていないため、
使用には注意する必要があります。
工夫によっては厳密な型比較を行うこともできますが、そこまでして switch 文を使用したいかと言われると微妙なところです。
処理がわかりにくいこと
2 に関しては主観となっていますが、break を記載しない場合、
次の case 内の処理を行ってしまうという点を注意する必要があります。
複雑な処理になるほど break の有無に意識を向ける必要があるため、
上記の2点の存在が大きく、私は switch 文の使用を控えていました。
match 式の登場
PHP8 より switch 文の注意点を解決する match 式が登場しました。
上記のコードを match 式で記載すると以下のようになります。
$type = 1;
echo match($type) {
0 => "利用する",
1 => "利用しない",
default => "未設定"
};
match 式では厳密な型比較(’===’)が行われ、
後の分岐を意識した break を記述する必要がありません。
switch 文の注意点をカバーできており、書き方もシンプルなので、機会があれば使用したいと考えています。
PHP8 から使えるので、使用を検討してみてください。