Mengecek Nilai Null dengan Fitur Null Coalescing Operator di PHP 7.x

Di PHP, kita bisa menggunakan fitur if yang berfungsi untuk mengevaluasi sebuah nilai dari sebuah expression (ekspresi). Nilai dari ekspresi tersebut harus berupa true (boolean), agar blok kode di dalam kontrol struktur tersebut dapat dieksekusi.

Sebagai contoh, di bawah merupakan struktur kontrol sederhana untuk mengecek apakah sebuah variabel sudah didefinisikan dan tidak bernilai null. Ekspresinya sendiri memuat dua kondisi dengan menggunakan operator and atau bisa juga ditulis dengan simbol &&.

if (isset($a) and ! is_null($a)) {
    $a = 1;
}

echo $a;

Untuk ekspresi yang lebih singkat, kita juga isa menggunakan fungsi empty(). Fungsi ini bertujuan untuk memastikan variabel sudah didefinisikan dan tidak bernilai kosong. Nilai kosong dalam fungsi empty() bisa berupa null, integer dengan nilai 0, array kosong, atau string kosong. Jadi, pastikan kalian selalu berhati-hati dalam menggunakan fungsi tersebut.

if (! empty($b)) {
    $b = "I'm not defined before.";
}

Ternary Operator

Untuk cara yang lebih singkat, khususnya assign sebuah nilai ke dalam variabel, PHP menyediakan fitur yang bernama ternary operator, yang mana strukturnya berbentuk: expression ?? true : false. Sebagai contoh, kita akan meng-assign sebuah nilai baru pada variabel $b berdasarkan ketergantungan akan variabel $a.

$a = null;
$b = empty($a) ? 'New Value' : $a;

echo $b; // New Value

Berlanjut ke contoh lain, yang mana apabila $a bernilai false (null atau kosong), maka variabel $b akan diisi nilai baru. Secara singkat, dapat ditulis dengan ternary operator shorthand.

$a = null;
$b = $a ?: 'Valid';

echo $b; // Valid

Null Coalescing Operator

Di PHP 7.x, diperkenalkan fitur baru, yaitu null coalescing operator. Fitur ini pada dasarnya serupa dengan ternary operator yang ditulis di atas. Null coalescing operator menggunakan simbol ?? dan mengembalikan operand pertama jika sudah didefinisikan dan tidak berupa null.

$b = $a ?? 'Valid';

echo $b // Valid

Null coalescing juga dapat digunakan untuk operasi yang berantai.

$a = null
$b = null;

// $c is not defined

$d = $c ?? $a ?? $b ?? 'Nothing';  // Nothing

Kapan Menggunakan Salah Satunya?

Nah, jika ternary operator shorthand punya fungi sama dengan null coalescing operator, kenapa harus ada kedua fitur tersebut di PHP?

$a ?: $b;

// VS

$a ?? $b;

Kedua fitur tersebut memang sama, tapi ada kondisi tertentu kita harus menggunakan ternary operator shorthand, dan di lain kesempatan menggunakan null coalescing operator.

Gunakan ternary operator shorthand jika,

  • menggunakan ekspresi dengan fungsi, atau komparasi lebih dari satu nilai,
  • variabel sudah didefinisikan pada blok di atasnya. Ternary operator shorthand menghasilkan E_NOTICE apabila kita mengevaluasi sebuah variabel yang belum didefinisikan sebelumnya.

Gunakan null coalescing operator jika,

  • kita tidak peduli apakah variabel sudah didefinisikan atau belum,
  • yakin bahwa ekspresi berupa null atau tidak ada sama sekali.

 

 

Tinggalkan Balasan