Tutorial Belajar PHP Part 41: Pengertian Variable Scope, Global Variable, dan Static Variable

Pada tutorial kali ini kita akan pelajari beberapa istilah terkait function dalam PHP, yaitu variable scope, global variable, dan static variable.


Pengertian Variable Scope

Variable scope (atau ruang lingkup variabel) adalah jangkauan kode program dimana perintah program masih bisa mengakses variabel.

Jika kita mendefinisikan suatu variabel pada file PHP, maka variabel tersebut dapat diakses oleh seluruh kode program pada halaman yang sama. Namun jika variabel di definisikan di dalam sebuah function, variabel tersebut belum tentu bisa diakses dari luar function. Inilah yang dimaksud dengan variable scope.

Variabel yang di definisikan di dalam function, secara default tidak dapat diakses oleh kode program di luar function tersebut. Dan begitu juga sebaliknya, variabel yang di definisikan di luar fungsi, tidak bisa diakses dari dalam function.


Contoh Variable Scope dalam Function PHP

Untuk memahami konsep variable scope, perhatikan kode program berikut:

<?php
  $a = 5;
  
  function coba() {
    $a = 10;
    $b = 7;
  }
  
  coba();
  echo $a; // 5
  echo $b; // Warning: Undefined variable $b
?>

Pada baris 2, saya mendefinisikan variabel $a dan memberikan nilai awal 5. Kemudian membuat function coba() yang mengisi kembali variabel $a dengan nilai 10. Selain itu terdapat juga deklarasi variabel $b di dalam function ini.

Setelah memanggil function coba() di baris 9, saya memeriksa isi variabel $a dengan perintah echo $a. Ternyata nilai $a adalah 5, bukan 10!

Dan ketika ingin mengakses variabel $b, PHP mengeluarkan pesan peringatan "Warning: Undefined variable $b". Pesan error ini menyatakan kalau variabel $b belum terdefinisi.

Hal ini terjadi karena variabel $a dan $b berada di dalam scope function coba(), sehingga tidak bisa diakses dari luar function. Atau dengan kata lain, deklarasi variabel $a dan $b di baris 5-6 hanya bisa diakses oleh perintah di dalam function itu saja.

Sekarang mari kita balik:

<?php
  $a = 5;
  
  function coba() {
    echo $a; // Warning: Undefined variable $a
  }
  
  coba();
  echo $a; // 5
?>

Di baris 5, saya ingin mengakses variabel $a dari dalam fungsi coba(), namun PHP mengeluarkan pesan "Warning: Undefined variable $a".

Artinya, PHP tidak menemukan adanya variabel $a di dalam function coba(). Variabel $a hanya bisa diakses di luar ruang lingkup function.

Pembatasan variable scope seperti ini terkesan merepotkan, namun sebenarnya sangat berguna untuk men-isolasi penggunaan variabel agar tidak saling menimpa.

Fungsi-fungsi bawaan PHP dibuat oleh berbagai programmer dari seluruh dunia, dan mungkin saja tidak sengaja memakai nama variabel yang sama. Dengan menerapkan variable scope, masalah ini bisa di hindari.


Pengertian Global Variabel

Jika kita tetap ingin mengakses variabel yang di definisikan di luar function dan sebaliknya, tambah perintah "global" sebelum pendefenisian variabel.

Berikut contoh penggunaan keyword global di PHP:

<?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 ini tidak akan error seperti sebelumnya. Perintah global membuat kode di dalam function coba() bisa mengakses variabel yang di definisikan di luar function. Dan begitu pula sebaliknya, kode di luar function bisa mengakses isi variabel $a dan $b.


Pengertian Static Variabel

Static variabel adalah jenis variabel yang mempertahankan nilainya pada setiap pemanggilan function. Ini berbeda dengan variabel normal yang nilainya secara otomatis akan di-reset setelah dijalankan.

Berikut contoh penerapan static variabel 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();
?>

Tutorial Belajar PHP - Pengertian Static Variable

Jika awalan perintah static pada baris 3 di hapus, variabel $a akan selalu bernilai 1, karena terdapat operasi $a = 0 dan $a = $a+1 pada setiap kali pemanggilan function coba().

Namun dengan membuat $a sebagai static variable, nilai $a akan terus dipertahankan sepanjang pemrosesan oleh PHP.

Konsep tentang variable scope, global variable dan static variable akan membantu kita dalam memahami cara kerja fungsi dalam PHP.


Selanjutnya masih tutorial tentang function, akan dibahas tentang cara pengecekan tipe data argumen untuk fungsi PHP.

19 Comments

  1. simamaung
    08 Apr 14
    • Andre
      16 Apr 14
  2. adipurnomo
    30 Dec 14
    • Andre
      30 Dec 14
  3. desy
    12 Oct 15
  4. anandia
    05 Feb 16
    • Andre
      07 Feb 16
  5. Fahrul
    17 Mar 16
    • Andre
      18 Mar 16
  6. Wisnu
    01 Jul 16
    • Andre
      13 Jul 16
  7. Sahrul
    29 May 17
    • Andre
      30 May 17
  8. Naufal
    12 Jun 18
  9. bmkun
    05 Feb 19
    • Andre
      05 Feb 19
  10. Satria
    14 May 19

Add Comment