Tutorial PHP #9: Scope Variabel dan Parameter Function

1. Apa itu Scope?

Scope adalah area atau wilayah di mana sebuah variabel bisa diakses. Memahami scope sangat penting untuk menghindari bug yang membingungkan, terutama di project yang lebih besar.

2. Local Scope

Variabel yang dideklarasikan di dalam function hanya bisa diakses dari dalam function itu saja.

<?php
function tampilPesan() {
    $pesan = "Ini variabel lokal";   // hanya ada di dalam function ini
    echo $pesan;
}

tampilPesan();   // Output: Ini variabel lokal
echo $pesan;     // ERROR! $pesan tidak dikenal di luar function
?>

3. Global Scope

Variabel yang dideklarasikan di luar function adalah variabel global. Tapi secara default, variabel global tidak bisa diakses langsung dari dalam function.

<?php
$nama = "Ariq";   // variabel global

function tampilNama() {
    echo $nama;   // Output: kosong / undefined! bukan "Ariq"
}

// Solusi 1: gunakan keyword global
function tampilNamaGlobal() {
    global $nama;   // deklarasikan dulu
    echo $nama;     // Output: Ariq
}

tampilNamaGlobal();

// Solusi 2 (lebih disarankan): kirim lewat parameter
function tampilNamaParam($nama) {
    echo $nama;
}

tampilNamaParam($nama);   // Output: Ariq
?>

Tips: Hindari terlalu banyak menggunakan global. Lebih baik kirim data lewat parameter - kode lebih bersih dan mudah di-debug.

4. Static Variable

Variabel static menyimpan nilainya antar pemanggilan function - tidak direset setiap kali function dipanggil.

<?php
function hitungPanggilan() {
    static $counter = 0;   // hanya diinisialisasi sekali
    $counter++;
    echo "Dipanggil ke-$counter <br>";
}

hitungPanggilan();   // Output: Dipanggil ke-1
hitungPanggilan();   // Output: Dipanggil ke-2
hitungPanggilan();   // Output: Dipanggil ke-3
?>

5. Parameter: Pass by Value vs Pass by Reference

Secara default, PHP mengirim nilai ke function sebagai copy (pass by value). Perubahan di dalam function tidak mempengaruhi variabel aslinya.

<?php
// Pass by value (default)
function tambahSepuluh($angka) {
    $angka += 10;
    echo "Dalam function: $angka";   // Output: 15
}

$nilai = 5;
tambahSepuluh($nilai);
echo "Di luar function: $nilai";     // Output: 5 (tidak berubah!)

// Pass by reference: pakai tanda &
function tambahSepuluhRef(&$angka) {
    $angka += 10;
}

$nilai = 5;
tambahSepuluhRef($nilai);
echo "Setelah function: $nilai";     // Output: 15 (berubah!)
?>

6. Variabel Variabel (Variable Variables)

<?php
$varName = "nama";
$$varName = "Ariq";   // sama dengan $nama = "Ariq"

echo $nama;    // Output: Ariq
echo $$varName; // Output: Ariq
?>

7. Ringkasan

  • Local scope: variabel hanya bisa diakses di dalam function tempat ia dideklarasikan
  • Global scope: variabel di luar function, perlu keyword global untuk diakses dari dalam
  • Static variable: nilainya dipertahankan antar pemanggilan function
  • Pass by value (default): function bekerja pada salinan data
  • Pass by reference (&): function bekerja langsung pada data asli

Tutorial berikutnya membahas array di PHP.


ariq fadhil

Im Ariq Tech, a Top Rated Fullstack Developer with 5+ years of experience, delivering high-quality solutions across 50+ projects.