Kodealgo

Variabel PHP

Variable adalah pengenal atau lokasi penyimpanan di memori komputer yang merepresentasikan nilai yang diketahui maupun tidak diketahui. Konsep variabel ada di semua bahasa pemrograman, tak terkecuali PHP.

Selain itu, secara umum sifat-sifat variabel sama diantara bahasa pemrograman, tapi ada beberapa perilaku yang spesifik antar bahasa pemrograman.

Berikut beberapa topik yang akan kita bahas terkait variabel PHP.

  1. Membuat Variabel
  2. Nilai Default Variabel
  3. Menetapkan Variabel
    1. Menetapkan Variabel Berdasarkan Nilai
    2. Menetapkan Variabel Berdasarkan Referensi
  4. Lingkup Variabel
    1. Mengakses Variabel Global di Lingkup Lokal
  5. Variable Variables
  6. Predefined Variables

Membuat Variabel

Untuk membuat variabel di PHP, kita dapat menggunakan tanda dolar ($) diikuti dengan nama variabel yang ingin kita gunakan. Agar variabel dianggap valid, kita perlu menggunakan nama yang sesuai dengan aturan.

Contoh:

<?php

// variabel tanpa nilai
$nama;

// variabel dengan nilai
$umur = 17;

Variabel PHP peka huruf besar/kecil, oleh karena itu jika kita membuat variabel mengguankan huruf kecil semua kita harus menulisnya sama persis ketika kita ingin menggunakannya.

Contoh dibawah, kita membuat variabel $Nama ("N" dengan huruf besar) kemudian kita menggunakannya menggunakan huruf kecil semua $nama, ini akan mengembailkan pesan peringatan atau kesalahan.

<?php
$Nama = "reza";

var_dump($nama);
// PHP Warning:  Undefined variable $nama in ...
// NULL

Di PHP kita dapat membuat variabel tanpa nilai atau dengan nilai. Jika variabel dibuat tanpa nilai, mereka sebetulnya memiliki nilai default, nilainya bergantung pada konteks penggunaannya.

Oleh karena saat kita mengeksekusi contoh kode diatas, interpreter tidak hanya mengembalikan pesan peringatan tapi juga nilai NULL, kita akan membahas ini di bawah.

Selain itu, di PHP kita dapat membuat variabel dengan nama yang sama di lingkup yang sama, ini akan menimpa nilai sebelumnya jika variabel dengan nama yang sama dibuat dengan nilai.

Contoh dibawah, kita membuat variabel $nama dengan nilai "reza", dibaris berikutnya kita membuat variabel dengan nama yang sama tapi tanpa nilai. Hasilnya, nilai sebelumnya tidak ditimpa karena deklarasi $nama dibaris berikutnya tidak memiliki nilai.

<?php

$nama = "reza";
$nama;

var_dump($nama); // string(6) "reza"

Bagaimana jika kita membuat variabel yang sama dibaris berikutnya tapi memiliki nilai? hasilnya, nilai sebelumnya akan ditimpa, mari kita lihat contoh dibawah.

<?php

$nama = "reza";
$nama = "renova";

var_dump($nama); // string(6) "renova"

Aturan dan konvensi penamaan variabel:

  1. Variabel harus diawali dengan tanda dolar $.
  2. Nama variabel (setelah tanda dolar) harus dimulai dengan huruf atau garis bawah diikuti dengan sejumlah huruf, angka, atau garis bawah.
  3. Nama variabel biasanya ditulis dengan gaya camel case, kata pertama ditulis menggunakan huruf kecil dan huruf pertama pada kata berikutnya ditulis dengan huruf besar, contoh: $namaLengkap.

Nilai Default Variabel

Di PHP kita dapat membuat variabel tanpa nilai. Variabel yang tidak diinisialisasi dengan nilai memiliki nilai default, nilai tersebut tergantung pada konteks penggunaannya, jika variabel digunakan tersebut tidak digunakna dalam konteks tertentu, nilai defaultnya adalah NULL.

Jika variabel digunakan dalam konteks yang membutuhkan nilai boolean maka defaultnya adalah false, integer, float, atau double defaultnya adalah nol, string adalah string kosong, dan array menjadi array kosong.

Mari kita buktikan.

Untuk membuktikan nilai default variabel dalam konteks yang membutuhkan nilai boolean, kita bisa menggunakan operator ternary.

Sintaks operator ternary di PHP adalah expr1 ? expr2 : expr3, dimana expr1 harus boolean jika tidak maka akan dikonversi ke boolean, jika expr1 bernilai true maka expr2 akan digunakan, jika false maka expr3 digunakan.

<?php

var_dump($nama ? true : false); // bool(false)

Contoh dalam konteks yang membutuhkan nilai string.

<?php

var_dump($nama .= "belajar"); // string(7) "belajar"

Contoh dalam konteks yang membutuhkan nilai integer, float, dan double.

$unsetInt;
var_dump($unsetFloat += 10); // int(10)

$unsetFloat;
var_dump($nama += 3.5); // float(3.5)

Contoh dalam konteks yang membutuhkan nilai array.

$unsetArr[0] = "reza";
var_dump($unsetArr);
// array(1) {
//   [0]=>
//   string(4) "reza"
// }

Jika kita menjalankan contoh kode diatas kecuali array, ini akan menghasilkan pesan kesalaha level E_NOTICE (PHP Warning: Undefined variable ... in ... on line ...).

Menetapkan Variabel

Kita dapat menetapkan atau mengisi variabel dengan nilai di PHP dalam dua cara, cara pertama adalah yang paling sering digunakan.

Menetapkan Variabel Berdasarkan Nilai

Untuk menetapkan atau mengisi variabel dengan nilai, kita bisa menggunakan operator assignment = diikuti dengan nilai yang ingin ditetapkan ke variabel sebelum operator.

Contoh berikut, kami membuat variabel $nama kemudian menetapkan nilai "reza" ke variabel tersebut.

<?php

$nama = "reza";

Dengan menggunakan metode ini ketika kita menetapkan ekspresi atau nilai ke variabel, nilai ekspresi akan disalin ke variabel tujuan.

Oleh karena itu, ketika kita menetapkan nilai suatu variabel ke variable lain kemudian mengubah salah satu nilai variabel tersebut, nilai dari variabel yang lain tidak akan berubah.

Mari kita lihat contoh kode dibawah, apa yang terjadi jika nilai variabel $binatang berubah? apakah nilai variabel $hewan juga akan ikut berubah? jawabannya tidak, karena metode ini menyalin nilai, jadi hanya nilai dari variabel $binatang saja yang berubah.

<?php

$binatang = "kucing";
$hewan = $binatang;

var_dump($binatang); // string(6) "kucing"
var_dump($hewan); // string(6) "kucing"

$binatang = "ayam";

var_dump($binatang); // string(4) "ayam"
var_dump($hewan); // string(6) "kucing"

Menetapkan Variabel Berdasarkan Referensi

Selain menetapkan variabel berdasarkan nilai, kita juga bisa menetapkan variabel berdasarkan referensi (assign by reference).

Jika kita menetapkan variabel berdasarkan referensi ke variabel lain, ketika kita mengubah nilai salah satu variabel, maka semua variabel yang merujuk atau mereferensi akan ikut berubah.

Untuk menetapkan variabel dengan referensi, cukup tambahkan tanda dan (&) ke awal variabel yang ditetapkan.

<?php

$binatang = "kucing";
$hewan = &$binatang; // assign by reference

var_dump($binatang); // string(6) "kucing"
var_dump($hewan); // string(6) "kucing"

$binatang = "ayam";

var_dump($binatang); // string(4) "ayam"
var_dump($hewan); // string(6) "ayam"

$hewan = "bebek";

var_dump($binatang); // string(5) "bebek"
var_dump($hewan); // string(5) "bebek"

Lingkup Variabel

Lingkup atau scope menentukan apakah variabel tertentu dapat digunakan di bagian tertentu dalam kode PHP kita.

Variabel berada di lingkup lokal jika dibuat diantara kurung kurawal buka ({) dan kurung kurawal tutup (}) selain dari itu variabel berada di lingkup global.

Misalnya, untuk membuat fungsi PHP kita perlu membungkus badang fungsi dengan tanda kurung kurawal buka dan tutup, di sana kita dapat membuat statement termasuk membuat variabel.

Mari kita lihat contoh berikut, variabel $binatang berada dalam lingkup global, sedangkan variabel $nama berada dalam lingkup lokal fungsi.

<?php

// global
$binatang = "kucing";

function test()
{
  // lokal
  $nama = "reza";
}

Pertanyaannya, apakah kita bisa menggunakan variabel global di dalam lingkup lokal atau sebaliknya?

Jawabannya adalah tidak, kita tidak dapat mengakses variabel global di dalam lingkup lokal maupun mengakses variabel lokal di dalam lingkup global.

Mari kita buktikan.

Contoh dibawah kita menggunakan variabel global di dalam lingkup lokal fungsi, hasilnya muncul pesan peringatan.

<?php

$nama = "renova";

function cetakNama()
{
  echo $nama;
}

cetakNama();

// PHP Warning:  Undefined variable $nama in ... on line ...

Contoh kode dibawah ini mengakses variabel lokal di lingkup globa, ini menghasilkan pesan peringatan yang identik.

<?php

function cetakNama()
{
  $nama = "renova";
}

cetakNama();

echo $nama;

// PHP Warning:  Undefined variable $nama in ... on line ...

Mengakses Variabel Global di Lingkup Lokal

PHP sendiri sebetulnya menyediakan beberapa variabel bawaan salah satunya $_SERVER, variabel tersebut bersifat global, bedanya variabel tersebut dapat diakses dimana saja termasuk di lingkup lokal.

Kita sebetulnya dapat mengakses variabel global di dalam lingkup lokal menggunakan kata kunci global atau $GLOBALS["namaVariabel"].

Lihat kode dibawah untuk contoh penggunaan kata kunci global, kata kunci ini memberitahu PHP bahwa ketika kita menggunakan variabel $nama dalam lingkup lokal gunakan variabel $nama yang ada di lingkup global, hasilnya kode dibawah akan menghasilkan output renova.

<?php

$nama = "renova";

function cetakNama()
{
  global $nama;

  echo $nama;
}

cetakNama();

// renova

Selain menggunakan kata kunci global, kita juga bisa mengakses variabel global di lingkup lokal menggunakan $GLOBALS["namaVariabel"], contoh:

$nama = "renova";

function cetakNama()
{
  echo $GLOBALS["nama"];
}

cetakNama();

// renova

Variable Variables

Variable variables adalah fitur yang baru dirilis di PHP 7.1.0, fitur ini memungkinkan kita membuat variabel dengan nama dari nilai di variabel lain.

Untuk menggunakan fitur ini kita bisa menggunakan dua buah tanda dolar diikuti dengan nama variabel yang nilainya akan kita buat sebagai variabel baru, contoh: $$variabel.

Contoh berikut kita membuat variabel menggunakan nama dari nilai yang ada di variabel $binatang, karena variabel $binatang berisi nilai "kucing" ini akan menghasilkan variabel $kucing.

<?php

$binatang = "kucing";

$$binatang = "kitty"; // buat variabel "kucing" dengan nilai "kitty"

echo "$binatang $kucing"; // kucing kitty

Predefined Variables

PHP menyediakan sejumlah variabel yang telah ditentukan sebelumnya (predefined variables) ke skrip apa pun yang dijalankannya. Tapi beberapa variabel hanya tersedia berdasarkan server, versi, pengaturan server, dan faktor lainnya.

Oleh karena itu, beberapa variabel mungkin tersedia di lingkungan yang satu tapi tidak di lingkungan yang lain.

Berikut daftar predefined variables umum di PHP:

  • $GLOBALS - semua variabel yang berada dalam lingkup global.
  • $_SERVER - informasi server dan lingkungan.
  • $_GET - variabel HTTP GET.
  • $_POST - variabel HTTP POST.
  • $_FILES - variabel unggah file HTTP.
  • $_REQUEST - variabel permintaan HTTP.
  • $_SESSION - variabel sesi.
  • $_ENV - variabel lingkungan.
  • $_COOKIE - cookie HTTP.
  • $php_errormsg - pesan kesalaha sebelumnya.
  • $http_response_header — header respon HTTP.
  • $argc - jumlah argumen yang diteruskan ke skrip
  • $argv - argumen yang diteruskan ke skrip