BAB 8.2B-1 – VARIABLE SCOPE (RUANG LINGKUP VARIABEL)

Tujuan Pembelajaran

Setelah mempelajari bab ini, peserta didik diharapkan mampu:

  • Menjelaskan pengertian Variable Scope.
  • Memahami Local Scope.
  • Memahami Global Scope.
  • Menggunakan keyword global.
  • Menggunakan array $GLOBALS.
  • Memahami Static Variable.
  • Menentukan jenis scope yang tepat sesuai kebutuhan.
  • Menerapkan Variable Scope dalam studi kasus aplikasi sederhana.

Pendahuluan

Pada bab sebelumnya kita telah mempelajari cara membuat function.

Perhatikan contoh berikut.

<?php

function salam()
{
    echo "Halo Dunia";
}

salam();

?>

Program tersebut berjalan dengan baik.

Namun bagaimana jika kita mempunyai variabel seperti berikut?

<?php

$nama = "Andi";

function tampilkan()
{
    echo $nama;
}

tampilkan();

?>

Apakah program akan menampilkan:

Andi

Jawabannya adalah tidak.

Mengapa?

Karena variabel mempunyai ruang lingkup (scope).


Apa itu Variable Scope?

Variable Scope adalah cakupan atau wilayah di mana sebuah variabel dapat digunakan.

Setiap variabel yang dibuat di PHP memiliki batas penggunaan.

Ilustrasi sederhana:

Program

│

├── Variabel Global
│
├── Function A
│      └── Variabel Local
│
├── Function B
│      └── Variabel Local
│
└── Function C
       └── Variabel Local

Artinya:

  • Variabel global berada di luar function.
  • Variabel local berada di dalam function.
  • Keduanya memiliki aturan penggunaan yang berbeda.

Jenis Variable Scope

PHP memiliki beberapa jenis ruang lingkup variabel:

  1. Local Scope
  2. Global Scope
  3. Static Scope

Pada bab ini ketiga jenis tersebut akan dipelajari secara bertahap.


Local Scope

Pengertian

Local Scope adalah variabel yang dibuat di dalam function.

Variabel ini hanya dapat digunakan oleh function tersebut.

Contoh:

<?php

function biodata()
{
    $nama = "Andi";

    echo $nama;
}

biodata();

?>

Output

Andi

Program berjalan normal.


Variabel Local Tidak Dapat Diakses dari Luar Function

Perhatikan contoh berikut.

<?php

function biodata()
{
    $nama = "Andi";
}

biodata();

echo $nama;

?>

Hasil:

Undefined variable $nama

Mengapa?

Karena $nama hanya hidup di dalam function biodata().

Begitu function selesai dijalankan, variabel tersebut tidak dapat diakses lagi.


Setiap Function Memiliki Variabel Sendiri

Perhatikan contoh berikut.

<?php

function siswaA()
{
    $nama = "Andi";

    echo $nama;
}

function siswaB()
{
    $nama = "Budi";

    echo "<br>";

    echo $nama;
}

siswaA();

siswaB();

?>

Output

Andi

Budi

Meskipun sama-sama bernama $nama, kedua variabel tersebut tidak saling memengaruhi karena masing-masing berada pada function yang berbeda.


Kelebihan Local Scope

Menggunakan Local Scope memiliki beberapa keuntungan:

  • Variabel lebih aman.
  • Mengurangi konflik nama.
  • Program lebih modular.
  • Lebih mudah dipelihara.

Karena alasan inilah programmer profesional lebih sering menggunakan variabel lokal dibandingkan variabel global.


Global Scope

Pengertian

Global Scope adalah variabel yang dibuat di luar function.

Contoh:

<?php

$nama = "Andi";

echo $nama;

?>

Output

Andi

Variabel ini dapat digunakan di area program utama.

Namun, apakah dapat langsung digunakan di dalam function?


Global Scope Tidak Otomatis Masuk ke Function

<?php

$nama = "Andi";

function tampilkan()
{
    echo $nama;
}

tampilkan();

?>

Hasil:

Undefined variable $nama

Hal ini sering membingungkan programmer pemula.

Penyebabnya adalah function memiliki ruang lingkup sendiri.


Menggunakan Keyword global

Jika ingin menggunakan variabel global di dalam function, gunakan keyword global.

Contoh:

<?php

$nama = "Andi";

function tampilkan()
{
    global $nama;

    echo $nama;
}

tampilkan();

?>

Output

Andi

Keyword global memberi tahu PHP bahwa variabel tersebut berasal dari luar function.


Menggunakan Lebih dari Satu Variabel Global

<?php

$nama = "Andi";
$kelas = "XI RPL";

function dataSiswa()
{
    global $nama, $kelas;

    echo $nama;

    echo "<br>";

    echo $kelas;
}

dataSiswa();

?>

Output

Andi

XI RPL

Mengubah Nilai Variabel Global

Variabel global dapat diubah dari dalam function.

<?php

$nilai = 80;

function ubahNilai()
{
    global $nilai;

    $nilai = 95;
}

ubahNilai();

echo $nilai;

?>

Output

95

Programmer harus berhati-hati karena perubahan ini akan memengaruhi seluruh program.


Mengenal Array $GLOBALS

Selain keyword global, PHP menyediakan array khusus bernama $GLOBALS.

Array ini menyimpan seluruh variabel global.

Contoh:

<?php

$a = 10;
$b = 20;

function jumlah()
{
    echo $GLOBALS['a'] + $GLOBALS['b'];
}

jumlah();

?>

Output

30

Menampilkan Isi $GLOBALS

<?php

$nama = "Andi";
$umur = 17;

print_r($GLOBALS);

?>

Program akan menampilkan seluruh variabel global yang tersedia beserta informasi lain yang disediakan PHP.


Kapan Menggunakan $GLOBALS?

Penggunaan $GLOBALS sebaiknya dibatasi pada kondisi tertentu.

Pada aplikasi modern, penggunaan parameter dan return lebih disarankan dibandingkan terlalu banyak mengakses variabel global.


Static Variable

Pengertian

Biasanya variabel lokal akan hilang setelah function selesai dijalankan.

Namun bagaimana jika kita ingin nilainya tetap tersimpan?

Gunakan keyword static.


Contoh Tanpa Static

<?php

function hitung()
{
    $angka = 1;

    echo $angka;

    $angka++;
}

hitung();

echo "<br>";

hitung();

?>

Output

1

1

Mengapa selalu 1?

Karena setiap function dipanggil, variabel dibuat ulang.


Contoh Menggunakan Static

<?php

function hitung()
{
    static $angka = 1;

    echo $angka;

    echo "<br>";

    $angka++;
}

hitung();

hitung();

hitung();

?>

Output

1

2

3

Nilai $angka tetap tersimpan meskipun function selesai dijalankan.


Studi Kasus 1 – Penghitung Jumlah Pengunjung

<?php

function counter()
{
    static $jumlah = 0;

    $jumlah++;

    echo "Pengunjung ke-".$jumlah."<br>";
}

counter();
counter();
counter();
counter();

?>

Output

Pengunjung ke-1
Pengunjung ke-2
Pengunjung ke-3
Pengunjung ke-4

Studi Kasus 2 – Nomor Antrian

<?php

function nomorAntrian()
{
    static $nomor = 100;

    echo "Nomor : ".$nomor."<br>";

    $nomor++;
}

nomorAntrian();
nomorAntrian();
nomorAntrian();

?>

Output

Nomor : 100
Nomor : 101
Nomor : 102

Perbandingan Jenis Scope

JenisLokasiDapat Diakses
LocalDi dalam functionHanya function tersebut
GlobalDi luar functionProgram utama
StaticDi dalam functionNilainya tetap tersimpan antar pemanggilan function

Best Practice Programmer

Gunakan Local Scope Sebisa Mungkin

Semakin sedikit variabel global, semakin mudah program dipelihara.


Hindari Terlalu Banyak Menggunakan global

Lebih baik mengirim data menggunakan parameter dan menerima hasil melalui return.


Gunakan Static Hanya Bila Dibutuhkan

Static cocok untuk penghitung (counter), cache sederhana, atau nomor urut, tetapi tidak perlu digunakan pada semua variabel.


Kesalahan yang Sering Dilakukan Pemula

Menganggap Variabel Global Otomatis Masuk ke Function

echo $nama;

di dalam function tidak akan bekerja tanpa global atau $GLOBALS.


Menggunakan Static Padahal Tidak Diperlukan

Akibatnya nilai variabel terus bertambah dan menghasilkan hasil yang tidak diharapkan.


Terlalu Banyak Variabel Global

Program menjadi sulit dipahami dan rawan bug karena banyak bagian dapat mengubah nilai variabel yang sama.


Latihan Praktik

Latihan 1

Buat function yang memiliki variabel lokal berisi nama siswa, kemudian tampilkan hasilnya.


Latihan 2

Buat variabel global $sekolah, lalu tampilkan nilainya dari dalam function menggunakan keyword global.


Latihan 3

Gunakan $GLOBALS untuk menjumlahkan dua buah variabel global.


Latihan 4

Buat function counter() menggunakan variabel static sehingga menghasilkan output:

1
2
3
4
5

Latihan 5

Buat program yang memiliki variabel lokal dan global dengan nama yang sama. Amati perbedaannya ketika ditampilkan.


Tugas Praktik Bab 8.2B-1

Sistem Nomor Tiket Pelayanan

Buat program PHP yang mensimulasikan sistem antrean pada loket pelayanan dengan ketentuan:

  1. Gunakan variabel static untuk menyimpan nomor antrean.
  2. Buat function ambilNomor() yang akan:
    • Menampilkan nomor antrean saat ini.
    • Menambah nomor untuk pemanggilan berikutnya.
  3. Gunakan variabel global untuk menyimpan nama instansi, misalnya:
$instansi = "SMK Negeri 1";
  1. Tampilkan nama instansi dari dalam function menggunakan keyword global.
  2. Panggil function ambilNomor() minimal lima kali sehingga terlihat nomor antrean bertambah secara otomatis.

Tantangan (Opsional)

  • Tambahkan format nomor seperti A001, A002, A003, dan seterusnya.
  • Buat function kedua resetNomor() untuk mengembalikan nomor antrean ke nilai awal (petunjuk: materi ini akan lebih mudah diselesaikan setelah memahami konsep yang lebih lanjut pada bab berikutnya).

Similar Posts

Tinggalkan Balasan

Alamat email Anda tidak akan dipublikasikan. Ruas yang wajib ditandai *