PHP Tips: Match Lebih Daripada Switch

3 min read

Published on 27 Sep (updated: 19 Oct)

Written by Irsyad A. Panjaitan

Fill in PHPTips and Tricks

ArticlesPHP Tips: Match Lebih Daripada Switch

Dalam artikel ini saya akan menjelaskan kenapa kita harus menggunakan Match dari pada Switch di PHP, Semenjak versi PHP 8.0, mereka telah mengeluarkan expresi match yang itu bisa dibilang lebih power dari pada switch.

Why

Salah satu yang bisa kita bandingkan antara match dan switch adalah kualitasnya. Switch masih menggunakan 2 operator == sebagai perbandingannya. Yang itu berarti, dia akan menghasil kualitas yang bisa dibilang lemah. Karena tidak sekalian memeriksa tipe data nya.

Sementara Match, akan menggunakan perbandingan yang kualiatas lebih menjanjikan karena memeriksa dengan tipe datanya juga.

Let's Begin

Untuk penulisan match sendiri itu jauh lebih simpel dari pada Switch. Karena dengan switch kita perlu case namun dengan match itu tidak. Perhatikan contoh berikut:

$band = 'Nirvana'; return match($band) { 'Nirvana' => "The band is {$band}", 'Led Zeppelin' => "The band is {$band}", 'Motörhead' => "The band is {$band}", };
phpCopy

Unlike Switch Statement

Tadi saya menyinggung tentang kualiatas perbandingan antara switch == dan match ===. Perhatikan contoh berikut.

$version = 8.0; switch ($version) { case '8.0': $compare = "No, it's not"; break; case 8.0: $compare = "Yes, it is"; break; } echo $compare;
phpCopy

Sementara jika kita menggunakan match yang dia akan menggunakan 3 operator === yang akan menghasilkan mana yang paling benar, termasuk tipe datanya.

$version = 8.0; return match($version) { '8.0' => "No, it's not", 8.0 => "Yes, it is", }; // Yes, it is
phpCopy

Mungkin Anda bertanya, bagaimana jika tidak ada pilihan di antara salah satunya. Apa yang terjadi? Well, dia akan menunjukkan kita error PHP Error:Unhandled match case.

$band = 'The Beatles'; return match($band) { 'Nirvana' => "The band is {$band}", 'Led Zeppelin' => "The band is {$band}", 'Motörhead' => "The band is {$band}", }; // PHP Error: Unhandled match case 'The Beatles'
phpCopy

Default pattern

Namun, jika kita ingin lebih simpel, kita bisa menunjukkan default value jika pilihan tidak dalam list seperti:

$band = 'The Beatles'; return match($band) { 'Nirvana' => "The band is {$band}", 'Led Zeppelin' => "The band is {$band}", 'Motörhead' => "The band is {$band}", default => 'No band selected' };
phpCopy

Oia, kita bisa juga throw exception seperti:

return match($band) { ... default => throw new InvalidBandException() };
phpCopy

Conditional Cases

Dari semua contoh di atas, tidak ada yang memakai match expression. Tetapi Anda tahu bahwa dengan menggunakan match ini, kita bisa membandingkan pilihan seperti:

$age = 33; return match (true) { $age >= 50 => 'Wonder woman', $age >= 32 => 'Super girl', $age >= 16 => 'Not eligible, too young!', default => 'I do not know', };
phpCopy

match expression bisa juga di gunakan untuk array. Perhatikan contoh berikut ini.

$band = ['Led Zeppelin', 'Nirvana']; return match($band) { ['Nirvana', 'Led Zeppelin'] => "The band is not eligible", ['Led Zeppelin', 'Nirvana'] => "The band is eligible", ['Disturbed', 'Asking Alexandria'] => "Oh no!", ['The beatles', 'Bob Dylan'] => "The choice have to be a band.", ['The beatles', 'Led Zeppelin'] => "The choice have to be a band.", default => throw new InvalidBandException() };
phpCopy

Else statement

Jika hanya satu statement, biasa di lakukan dengan if conditional. Namun dengan menggunakan match itu juga bisa.

$band = 'Nirvana'; return match($band) { 'Nirvana' => "The band is eligible", default => 'Not eligible' };
phpCopy

Referensi dari artikel ini bisa dilihat langsung di dokumentasi resmi PHP ya. Baik, semoga artikel ini bermanfaat, jangan lupa share and like jika Anda suka ya.

Irsyad A. Panjaitan

Let's start living like no one can help us in any event, so that when we are helped in certain times, it becomes a plus in itself.
3

Share on