2-1: Variabel
Objectives
- Memahami apa itu variabel
- Cara mendeklarasikan variabel di PHP
- Aturan penamaan variabel
- Perbedaan variabel dan konstanta
Apa itu Variabel?
Variabel adalah container untuk menyimpan data. Bayangkan variabel seperti label pada kotak — kotaknya menyimpan sesuatu, dan labelnya memberi nama agar mudah ditemukan.
┌─────────────────────────────────────────────────────────┐ │ ANALOGI VARIABEL = BOX WITH LABEL │ ├─────────────────────────────────────────────────────────┤ │ │ │ ┌─────────────────┐ │ │ │ $nama │ ← Label (nama variabel) │ │ │─────────────────│ │ │ │ "Andi" │ ← Isi (nilai/value) │ │ └─────────────────┘ │ │ │ │ Variabel $nama berisi string "Andi" │ │ │ └─────────────────────────────────────────────────────────┘
Deklarasikan Variabel di PHP
Di PHP, variabel dimulai dengan tanda $ (dollar sign).
<?php
// Variabel string
$nama = "Andi";
// Variabel integer
$umur = 25;
// Variabel float
$tinggi = 175.5;
// Variabel boolean
$menikah = false;
// Variabel array
$hobi = ["membaca", "coding", "gaming"];
?>
Aturan Penamaan Variabel
✅ Valid:
$nama$nama_depan(snake_case — RECOMMENDED)$namaDepan(camelCase)$Nama(PascalCase)$_nama$nama2
❌ Invalid:
$1nama— tidak boleh dimulai angka$nama-depan— tidak boleh pakai hyphen$nama depan— tidak boleh ada spasi
PHP Style Guide Recommendations
| Style | Contoh | Penggunaan |
|---|---|---|
| snake_case | $nama_depan | Recommended untuk PHP (kebanyakan codebase) |
| camelCase | $namaDepan | Digunakan di Laravel (Model properties) |
| PascalCase | $Nama | Digunakan untuk Class names |
| SCREAMING_SNAKE_CASE | $NAMA_DEPAN | Konstanta |
Contoh Penggunaan
<?php
// === BASICS ===
$nama = "Andi";
echo $nama; // Output: Andi
// === REASSIGN ===
$nama = "Budi"; // Nilai lama ("Andi") diganti
echo $nama; // Output: Budi
// === ASSIGN DARI VARIABEL LAIN ===
$pendaftar_terdahulu = "Andi";
$pendaftar_terbaru = $pendaftar_terdahulu;
echo $pendaftar_terbaru; // Output: Andi
// === VARIABEL VARIABLE ===
$variable_name = "nama";
$$variable_name = "Andi";
echo $nama; // Output: Andi
// $$variable_name berarti: buat variabel dengan nama sesuai
// isi $variable_name, yaitu "nama", lalu assign "Andi"
?>
Case Sensitivity
<?php
$nama = "Andi";
$NAMA = "Budi";
$Nama = "Citra";
// Ketiga variabel ini BEDA karena case-sensitive
echo $nama; // Andi
echo $NAMA; // Budi
echo $Nama; // Citra
?>
PHP itu case-sensitive untuk nama variabel. $nama, $NAMA, dan $Nama adalah tiga variabel yang berbeda. Tapi untuk function names, PHP case-insensitive (meskipun tidak disarankan).
Konstanta
Konstanta adalah nilai yang tidak bisa diubah setelah didefinisikan.
Menggunakan const
<?php
const APP_NAME = "Marikoding";
const VERSION = "1.0.0";
// Tidak bisa di-reassign — ini akan error:
// APP_NAME = "Nama Baru"; // Fatal Error!
echo APP_NAME; // Output: Marikoding
echo VERSION; // Output: 1.0.0
?>
Menggunakan define()
<?php
define("SITE_URL", "https://marikoding.com");
define("MAX_UPLOAD_SIZE", 10 * 1024 * 1024); // 10MB dalam bytes
echo SITE_URL; // Output: https://marikoding.com
echo MAX_UPLOAD_SIZE; // Output: 10485760
?>
Konstanta dengan define() vs const
| Aspek | const | define() |
|---|---|---|
| Global scope | Ya | Ya |
| Bisa di dalam conditional | ❌ Tidak | ✅ Ya |
| Bisa dengan expressions | ❌ Tidak | ✅ Ya |
| Performance | Lebih cepat | Sedikit lebih lambat |
| PHP version | PHP 5.3+ | Semua versi |
<?php
// const hanya bisa di global scope atau namespace
const API_KEY = "abc123";
// define() bisa di dalam conditional
if ($environment === "production") {
define("DEBUG_MODE", false);
} else {
define("DEBUG_MODE", true);
}
?>
Predefined Constants
PHP menyediakan banyak konstanta built-in:
<?php
// PHP Version
echo PHP_VERSION; // 8.3.0
// PHP OS
echo PHP_OS; // Linux / WINNT
// End of line
echo PHP_EOL; // \n (Linux) atau \r\n (Windows)
// Directory separator
echo DIRECTORY_SEPARATOR; // / (Linux) atau \ (Windows)
// Magic constants (berubah tergantung konteks)
echo __FILE__; // Full path file ini
echo __LINE__; // Line number saat ini
echo __DIR__; // Directory file ini
?>
Best Practices
-
Gunakan snake_case (PHP convention)
- ✅
$user_name - ❌
$userName(ini camelCase)
- ✅
-
Nama harus descriptive
- ✅
$jumlah_pengguna - ❌
$jp
- ✅
-
Jangan terlalu panjang
- ✅
$email_pengguna - ❌
$email_address_dari_form_registrasi_pengguna
- ✅
-
Array gunakan plural nouns
- ✅
$users - ❌
$user_list
- ✅
-
Boolean gunakan prefix is/has/are
- ✅
$is_active,$has_permission - ❌
$active,$permission
- ✅
Common Mistakes
<?php
// ❌ SALAH: Lupa tanda $
nama = "Andi"; // Parse error
// ❌ SALAH: Hyphen bukan underscore
$nama-depan = "Andi"; // Interpreted as $nama - $depan
// ❌ SALAH: Spasi dalam nama
$nama depan = "Andi"; // Parse error
// ❌ SALAH: Dimulai angka
$1nama = "Andi"; // Parse error
// ✅ BENAR:
$nama_depan = "Andi";
$username = "andi_dev";
$email_address = "andi@example.com";
?>
Exercise
- Buat 5 variabel dengan tipe berbeda (string, integer, float, boolean, array)
- Tampilkan semua isi variabel dengan
echo - Buat konstanta untuk config aplikasi kamu (API_KEY, BASE_URL, MAX_RETRY)
- Practice: Apa output dari kode berikut?
<?php
$a = 10;
$b = $a;
$a = 20;
echo $b; // Apa nilai $b?
?>
Summary
| Konsep | Penjelasan |
|---|---|
| Variabel | Container untuk menyimpan data |
| Deklarasi | $nama = "value" |
| Aturan | Dimulai $, diikuti huruf/underscore |
| Case-sensitive | $nama ≠ $NAMA |
| Konstanta | Nilai tetap, tidak bisa diubah |
| Define const | const NAME = "value" atau define("NAME", "value") |
Gunakan declare(strict_types=1); di awal file untuk mendapatkan type checking yang lebih ketat dan error yang lebih jelas.
Klik tombol ini setelah menyelesaikan materi
Quiz Bab 2
Uji pemahamanmu tentang Variabel & Tipe Data