BAB 2: VARIABEL & TIPE DATA

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
<?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

StyleContohPenggunaan
snake_case$nama_depanRecommended untuk PHP (kebanyakan codebase)
camelCase$namaDepanDigunakan di Laravel (Model properties)
PascalCase$NamaDigunakan untuk Class names
SCREAMING_SNAKE_CASE$NAMA_DEPANKonstanta

Contoh Penggunaan

php
<?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
<?php

$nama = "Andi";
$NAMA = "Budi";
$Nama = "Citra";

// Ketiga variabel ini BEDA karena case-sensitive
echo $nama;  // Andi
echo $NAMA;  // Budi
echo $Nama;  // Citra

?>
⚠️Perhatian

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
<?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
<?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

Aspekconstdefine()
Global scopeYaYa
Bisa di dalam conditional❌ Tidak✅ Ya
Bisa dengan expressions❌ Tidak✅ Ya
PerformanceLebih cepatSedikit lebih lambat
PHP versionPHP 5.3+Semua versi
php
<?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

// 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

  1. Gunakan snake_case (PHP convention)

    • $user_name
    • $userName (ini camelCase)
  2. Nama harus descriptive

    • $jumlah_pengguna
    • $jp
  3. Jangan terlalu panjang

    • $email_pengguna
    • $email_address_dari_form_registrasi_pengguna
  4. Array gunakan plural nouns

    • $users
    • $user_list
  5. Boolean gunakan prefix is/has/are

    • $is_active, $has_permission
    • $active, $permission

Common Mistakes

php
<?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

  1. Buat 5 variabel dengan tipe berbeda (string, integer, float, boolean, array)
  2. Tampilkan semua isi variabel dengan echo
  3. Buat konstanta untuk config aplikasi kamu (API_KEY, BASE_URL, MAX_RETRY)
  4. Practice: Apa output dari kode berikut?
php
<?php
$a = 10;
$b = $a;
$a = 20;
echo $b;  // Apa nilai $b?
?>

Summary

KonsepPenjelasan
VariabelContainer untuk menyimpan data
Deklarasi$nama = "value"
AturanDimulai $, diikuti huruf/underscore
Case-sensitive$nama$NAMA
KonstantaNilai tetap, tidak bisa diubah
Define constconst NAME = "value" atau define("NAME", "value")

💡Tip

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