Pengertian Variabel Scope, Global Variabel, dan Static Variabel PHP


Pada tutorial kali ini kita akan mempelajari tentang beberapa istilah terkait fungsi dalam PHP, yaitu Pengertian Variabel Scope, Global Variabel, dan Static Variabel dalam PHP.

 - Pengertian Variabel Scope -

Variabel Scope (atau ruang lingkup variabel) adalah jangkauan kode program dimana perintah program masih bisa mengakses sebuah variabel.
Jika kita mendefenisikan sebuah variabel pada satu file PHP, maka variabel tersebut dapat diakses oleh seluruh kode program pada halaman yang sama. Namun jika variabel tersebut di defenisikan di dalam sebuah fungsi, variabel itu belum tentu bisa diakses dari luar fungsi tersebut. Hal inilah yang dimaksud dengan Variabel Scope.
Variabel yang didefenisikan di dalam sebuah fungsi, secara default tidak dapat diakses oleh kode program di luar fungsi tersebut. Dan begitu juga sebaliknya, variabel yang didefenisikan di luar fungsi, tidak bisa diakses dari dalam fungsi.

- Contoh Variabel Scope dalam Fungsi PHP -

Untuk memahami konsep variabel scope, berikut adalah contoh kode program dalam PHP:
<?php
$a = 5;
 
function coba()
{
   $a=10;
   $b=7;
}
 
// pemanggilan fungsi coba()
coba();
echo $a; // 5
echo $b; // error:notice
?>
Pada baris ke-2, saya mendefenisikan variabel $a, dan memberikan nilai awal = 5. Pada baris ke-4 saya membuat fungsi coba() dan mendefenisikan kembali variabel $a yang kali ini nilainya adalah 10, dan juga membuat sebuah variabel baru, yakni $b.
Setelah memanggil fungsi coba() pada baris ke-11, saya kemudian memeriksa nilai $a dengan perintah echo. Dan ternyata nilai $a adalah 5, bukan 10. Dan ketika saya ingin mengakses variabel $b, PHP akan mengeluarkan peringatan bahwa variabel $b belum di defenisikan, dengan pesan error: Notice: Undefined variable: b in D:\xampp\htdocs\belajar\test.php on line 13.
Hal ini terjadi karena variabel $a  dan $b berada di dalam fungsi coba() yang merupakan variabel yang berbeda dengan variabel $a yang berada diluar fungsi. Jangkauan variabel $a dan $b hanya berada di dalam fungsi.
Contoh lainnya, perhatikan kode program berikut ini:
<?php
$b = 7;
 
function coba()
{
   $a=10;
   echo $a;
   echo $b;
}
 
coba();
?>
Pada program kali ini, saya mencoba mengakses variabel $b dari dalam fungsi coba(), namun PHP akan mengeluarkan pesan peringatan pada baris ke-8: Notice: Undefined variable: b in D:\xampp\htdocs\belajar\test.php on line 8 yang berarti bahwa PHP tidak menemukan adanya variabel $b. Variabel $b hanya dapat diakses dalam ruang lingkup di luar fungsi coba().
Konsep pembatasan variabel scope ini terkesan merepotkan, namun sebenarnya sangat berguna untuk men-isolasi penggunaan variabel agar tidak saling ‘menimpa’. Fungsi-fungsi bawaan di dalam PHP dibuat oleh berbagai programmer dari seluruh dunia, dan mungkin saja kita secara tidak sengaja menggunakan nama variabel yang sama dengan nama variabel yang ada dalam salah satu fungsi tersebut. Dengan menerapkan variabel scope, PHP dapat terhindar dari permasalahan tersebut.

- Pengertian Global Variabel -

Jika kita tetap ingin menggunakan variabel yang didefenisikan di luar fungsi dan sebaliknya, PHP memperbolehkan hal tersebut dengan menambahkan sebuah kata kunci ‘global’ sebelum pendefenisian nama variabel.
Berikut contoh penggunaan keyword global:
<?php
$a = 7;
 
function coba()
{
   global $a;
   global $b;
   $b=15;
   echo $a//7
   echo $b//15
}
 
coba();
echo $a; //7
echo $b; //15
?>
Program diatas tidak akan menghasilkan error seperti sebelumnya, dan kita bisa mengakses nilai variabel $a dari dalam fungsi coba(), dan nilai variabel $b di luar fungsi.
Kata kunci global membuat fungsi dapat mengakses variabel yang didefenisikan diluar fungsi.

- Pengertian Static Variabel -

Static Variabel, atau variabel statis adalah jenis variabel yang mempertahankan nilainya pada setiap pemanggilan fungsi. Untuk variabel normal, nilai dari variabel tersebut akan secara otomatis dihapus pada saat fungsi selesai dijalankan, dan akan dibuat ulang pada saat fungsi dipanggil.
Namun jika sebuah variabel dinyatakan sebagai static variabel, maka nilai variabel tersebut akan tetap dipertahankan walaupun fungsi telah selesai dijalankan. Biasanya fungsi ini dimanfaatkan jika kita ingin menghitung berapa kali sebuah fungsi dipanggil.
Berikut adalah contoh program penggunaan variabel statis dalam PHP:
<?php
function coba()
{
   static $a=0;
   $a=$a+1;
   return "Ini adalah pemanggilan ke-$a fungsi coba() <br />";
}
  
echo coba();
echo coba();
echo coba();
echo coba();
?>
Jika anda menghapus keyword static pada baris ke-4, maka variabel $a akan selalu bernilai 0, karena nilainya akan dihapus pada setiap kali pemanggilan fungsi coba(). Namun dengan membuat$a sebagai static variable, maka nilai dari $a akan terus dipertahankan sepanjang pemrosesan halaman oleh PHP.
Konsep tentang variabel scope, global variabel dan static variabel ini akan membantu kita dalam memahami cara kerja fungsi dalam PHP.