Variabel PHP adalah nama yang diawali $, dan kamu membuatnya dengan memberinya nilai: $name = "Ada";. Tidak ada kata kunci deklarasi dan tidak ada tipe yang perlu disebutkan, karena nilainya yang menentukan tipe. Nanti kamu juga bisa memberinya nilai dengan tipe yang berbeda.
Aturan penamaan variabel
Nama variabel diawali $, lalu sebuah huruf atau garis bawah, lalu huruf, digit, atau garis bawah apa pun. Huruf non-ASCII dihitung sebagai huruf, jadi $名前 valid, walaupun nama ASCII adalah kebiasaan umumnya. Nama variabel peka huruf besar kecil.
| Nama | Valid? |
|---|---|
$total, $userName, $user_name | ya |
$_count, $item2 | ya |
$2items | tidak, tidak boleh diawali digit |
$user-name | tidak, itu berarti $user dikurangi name |
$this | tidak, sudah dipakai untuk objek yang sedang aktif; memberinya nilai adalah fatal error |
Jadi $city, $City, dan $CITY adalah tiga variabel yang berbeda. Pakai snake_case ($first_name) atau camelCase ($firstName), dan pakai satu gaya saja di setiap proyek. Standar penulisan kode PSR sengaja tidak mengatur penamaan variabel; kode Laravel dan Symfony kebanyakan memakai camelCase.
Memakai variabel di dalam string
Di dalam tanda kutip ganda, PHP mengganti variabel dengan nilainya; di dalam tanda kutip tunggal, tidak. Bungkus variabel dengan kurung kurawal kalau ada huruf yang langsung mengikutinya atau saat kamu mengakses elemen array dengan key string:
Halaman string membahas tanda kutip, penggabungan, dan interpolasi secara rinci.
Variabel tak terdefinisi dan nilai default
Membaca variabel yang belum pernah diberi nilai menghasilkan null, dan PHP-mu mencetak warning:
Warning: Undefined variable $discount in /home/index.php on line 3
Periksa dulu dengan isset, atau pakai operator null coalescing ?? untuk memberi nilai default. Keduanya berjalan tanpa warning:
$x ??= 0; adalah bentuk singkat dari $x = $x ?? 0;. Nilai dari formulir dan URL adalah kasus yang paling umum: $page = $_GET['page'] ?? 1;.
Scope variabel di dalam fungsi
Variabel yang didefinisikan di luar fungsi tidak terlihat di dalamnya, dan variabel yang dibuat di dalam fungsi hilang saat fungsi itu selesai. Ini kejutan yang paling umum bagi orang yang datang dari JavaScript:
Tanpa ?? 0, fungsi pertama akan memberi warning tentang $taxRate yang tidak terdefinisi. Memberikan nilai sebagai parameter membuat fungsi mudah ditebak dan mudah diuji, dan itulah yang sebaiknya kamu pakai lebih dulu. Halaman fungsi membahas parameter dan nilai kembalian.
Kata kunci global dan $GLOBALS
Kalau sebuah fungsi benar-benar harus memakai variabel global, deklarasikan dengan global, atau akses lewat array $GLOBALS, yang menyimpan setiap variabel global berdasarkan namanya:
Variabel global membuat kode lebih sulit diikuti, karena fungsi mana pun bisa mengubahnya. Variabel global muncul di kode lama dan plugin WordPress (global $wpdb;); di kode baru, berikan nilainya sebagai parameter atau pakai class.
Variabel static menyimpan nilainya
Variabel static di dalam fungsi dibuat sekali dan menyimpan nilainya di antara pemanggilan. Variabel ini tetap lokal: kode di luar fungsi tidak bisa melihatnya.
Variable variables ($$name)
$$name memakai nilai $name sebagai nama variabel lain. Cara ini berjalan, tetapi array hampir selalu melakukan pekerjaan yang sama dengan lebih jelas:
<?php
$field = "color";
$$field = "blue"; // creates $color
echo $color, "\n";
// The clearer way to have names chosen at runtime:
$settings = [];
$settings[$field] = "blue";
echo $settings["color"], "\n";
Salinan atau reference
Memberikan satu variabel ke variabel lain akan menyalin nilainya, termasuk array. Tambahkan & di depannya supaya kedua nama menunjuk ke nilai yang sama:
Objek berperilaku berbeda: memberikan sebuah objek ke variabel lain menyalin handle ke objek yang sama, jadi perubahan lewat salah satu variabel terlihat dari keduanya. Pakai clone untuk salinan yang sebenarnya.
Kesalahan umum: variabel yang diset di dalam if atau loop
PHP tidak punya block scope, jadi variabel yang dibuat di dalam if, for, atau foreach tetap ada setelahnya. Ini membantu, tetapi juga menyembunyikan bug: kalau blok itu tidak dijalankan, variabelnya tidak pernah dibuat.
Tanpa baris default itu, $orders yang kosong akan membuat $message tidak terdefinisi dan mencetak warning. Beri setiap variabel sebuah nilai sebelum blok yang mungkin mengisinya.
Pertanyaan yang sering diajukan
Bagaimana cara mendeklarasikan variabel di PHP?
Beri nilai pada sebuah nama yang diawali $: $count = 10;. PHP tidak punya kata kunci var atau let dan tidak ada tipe dalam deklarasinya; variabel dibuat saat pertama kali diberi nilai dan mengikuti tipe nilainya.
Kenapa fungsiku tidak bisa melihat variabel yang didefinisikan di luarnya?
Fungsi PHP punya scope lokalnya sendiri dan tidak otomatis melihat variabel global. Berikan nilainya sebagai parameter (pilihan yang rapi), deklarasikan global $name; di dalam fungsi, atau baca $GLOBALS['name']. Closure bisa menangkapnya dengan use ($name), dan arrow function fn() menangkapnya secara otomatis.
Apa itu variabel static di PHP?
Variabel lokal yang dideklarasikan dengan static di dalam fungsi, seperti static $calls = 0;. Variabel ini diinisialisasi sekali dan menyimpan nilainya di antara pemanggilan fungsi itu, yang berguna untuk penghitung dan cache sederhana.
Apakah nama variabel PHP peka huruf besar dan kecil?
Ya. $name, $Name, dan $NAME adalah tiga variabel yang berbeda. Sebaliknya, nama fungsi dan nama class di PHP tidak peka huruf besar kecil.
Bagaimana cara menghapus variabel di PHP?
Panggil unset($name);. Setelah itu isset($name) bernilai false dan membacanya memunculkan warning "Undefined variable". Memberi nilai null tetap mempertahankan variabelnya, tetapi mengosongkannya.