Skip to content

Variable Scope

  • Di PHP, kita bisa membuat variable dimanapun yang kita mau.
  • Scope variable adalah dibagian mana saja sebuah variable bisa diakses.
  • PHP memiliki tiga jenis variable scope, yaitu:
    • global
    • local
    • static

Global Scope

  • Variable yang dibuat diluar function memiliki scope global.
  • Variable di scope global hanya bisa diakses dari luar function.
  • Artinya di dalam function, kita tidak bisa mengakses variable di global scope.

Contoh:

<?php
// Global scope
$nama = "Reza";

function halo(){
    echo $nama;
}

halo();
?>

Error

Jika skrip di atas dijalankan, tentu saja mucul pesan berikut, silahkan pahami sendiri maksudnya 😅

Warning: Undefined variable $nama in C:\Users\ASUS\Documents\GitHub\modul-belajar-php-dasar\sourcecode\scope\global.php on line 6

Local Scope

  • Variable yang dibuat di dalam function memiliki scope local.
  • Variable di scope local hanya bisa diakses dari dalam function itu sendiri.
  • Artinya variable tersebut tidak bisa diakses dari luar function ataupun dari function lain.

Contoh:

<?php
// Local scope
function buatUser(){
    $user = "Tono";
}

buatUser();
echo $user;
?>

Error

Warning: Undefined variable $user in C:\Users\ASUS\Documents\GitHub\modul-belajar-php-dasar\sourcecode\scope\local.php on line 8

Sejauh ini masih mengalami error yang sama. 🤭

Solusi

  • Jika kita ingin mengakses variable diluar function (global scope) dari dalam function, kita bisa menggunakan kata kunci global.
  • Dengan menggunakan kata kunci global, maka kita bisa mengakses variable yang ada di global scope dari dalam function.

Contoh:

<?php
// Menggunakan keyword global
$nama = "Jung Kook";

function halo(){
    global $nama;
    echo "Halo $nama\n";
}

halo();
?>
Alhamdulillah, akhirnya berhasil juga. 😊

Static Scope

  • Secara default local variable itu siklus hidupnya hanya sebatas function nya dieksekusi.
  • Jika sebuah function selesai dieksekusi, maka siklus hidup local variable nya selesai.
  • PHP memiliki scope yang bernama static.
  • Static scope hanya bisa di set ke local variable.
  • Saat kita membuat sebuah local variable menjadi static, maka siklus hidupnya tidak akan berhenti ketika sebuah function selesai dieksekusi.
  • Artinya jika function tersebut dieksekusi lagi, maka static variable tersebut akan memiliki value dari sebelumnya.

Contoh:

<?php
// Static scope
function antrian(){
    static $a = 1;
    echo "Antrian ke $a\n";
    $a++;
}

antrian();
antrian();
antrian();
?>

Superglobal

Variabel superglobal yaitu khusus bawaan PHP yagn dapat diakses dari mana saja, baik dari luar function maupun di dalam function.

Variabel $_GLOBALS

  • Secara default, ketika kita membuat sebuah variabel maka seberanya PHP akan menyimpannya di dalam memori komputer, tepatnya di variabel $_GLOBALS.
  • Varibal $_GLOBALS adalah variabel array yang berisi variabel-variabel bawaan PHP dan variabel yang kita definisikan.
  • Karena berupa array, maka kita bisa mengambil nilainya dengan skrip $_GLOBALS[nama_variabel].

Sebagai percobaan awal mari kita bongkar isi dari variabel $_GLOBALS.

<?php
var_dump($_GLOBALS);
?>

Coba jalankan skrip di atas, maka akan ditampilkan array yang isinya banyak sekali, silahkan amati dan teliti maksudnya.

Sekarang kita coba buat sebuah variabel, dan coba mengaksesnya dengan variabel $_GLOBALS.

<?php
$nama = "Kim Jong Unch";
$umur = 56;

function tambah_umur(){
    $_GLOBALS['umur']++;
}

echo "Nama : " . $_GLOBALS['nama'].PHP_EOL;
tambah_umur();
echo "Umur : " . $_GLOBALS['umur'];
?>

Penjelasan

  1. Awalnya kita membuat variabel $nama dan $umur
  2. Lalu kita membuat function tambah_umur() yang berfungsi mengambil variabal $umur yang diakses dengan variabel $GLOBAL['umur'] dan menaikkan nilainya dengan operator ++.
  3. Terakhir kita tampilkan hasilnya menggunakan echo.

Variabel $_SERVER

  • Variabel $_SERVER menyediakan informasi tentang header, path dan lokasi skrip.
  • Variabel $_SERVER menyediakan banyak informasi tentang server, rinciannya sebagaimana pada tabel berikut.
  • Namun, untuk membuktikannya, silahkan lakukan perintah var_dump($_SERVER);
Variabel Key Keterangan
$_SERVER['PHP_SELF'] Menghasilkan nama file PHP yang berisi skrip tersebut.
$_SERVER['GATEWAY_INTERFACE'] Menghasilkan cersi Common Gateway Interface (CGI) dari server.
$_SERVER['SERVER_ADDR'] Menghasilkan IP address dari host server.
$_SERVER['SERVER_NAME'] Menghasilkan nama dari host server.
$_SERVER['SERVER_SOFTWARE'] Menghasilkan nama aplikasi server, misalnya : Apacche/2.2.4
$_SERVER['SERVER_PROTOCOL'] Menghasilkan nama dan revisi dari Information Protocol, misalnya HTTP/1.1
$_SERVER['REQUEST_METHOD'] Menghasilkan request method yang digunakan pada halaman, apakah GET atau POST.
$_SERVER['REQUEST_TIME'] Menghasilkan timestamp mulai request.
$_SERVER['QUERY_STRING'] Menghasilkan query string jika halaman diakses dengan query string.
$_SERVER['HTTP_ACCEPT'] Menghasilkan Accept header dari request.
$_SERVER['HTTP_ACCEPT_CHARSET'] Menghasilkan Accept Charset Header dari request.
$_SERVER['HTTP_HOST'] Menghasilkan host header dari request.
$_SERVER['HTTP_REFERER'] Menghasilkan URL lengkap dari halaman yang sedang dibuka.
$_SERVER['HTTPS'] Menghasilkan informasi, apakah skrip diakses melalui protokol HTTPS.
$_SERVER['REMOTE_ADDR'] Menghasilkan IP address yang digunakan user untuk membuka halaman web.
$_SERVER['REMOTE_HOST'] Menghasilkan nama host dari user yang membuka halaman web.
$_SERVER['REMOTE_PORT'] Menghasilkan port yang digunakan oleh mesin untuk berkomunikasi dengan web server.
$_SERVER['SCRIPT_FILENAME'] Menghasilkan path absolut dari skrip yang sedang dijalankan.
$_SERVER['SERVER_PORT'] Menghasilkan port yang digunakan oleh web server.
$_SERVER['SERVER_SIGNATURE'] Menghasilkan versi server dan virtual hostname.
$_SERVER['PATH_TRANSLATED'] Menghasilkan system base-path dari skrip yang sedang berjalan.
$_SERVER['SCRIPT_NAME'] Menghasilkan path dari skrip yang sedang berjalan.
$_SERVER['SCRIPT_URI'] Menghasilkan URI dari halaman yang sedang dibuka.

Untuk membuktikan variabel $_SERVER mari kita bongkar isinya

<?php
var_dump($_SERVER);
?>

Karena tidak semua data kita butuhkan, sebagai contoh penggunaan, mari kita coba tampilkan beberapa saja.

Peringatan

  • Karena berkaitan dengan HTTP, maka jalankan script PHP berikut dengan PHP Server Mode.
  • Buka terminal pada Visual Studio Code dan jalankan command php -S localhost:80 lalu Enter.
  • Semisal saya menyimpan file nya dengan nama server02.php, maka buka di browser dan ketikkan pada address bar localhost/server02.php.
<?php
echo $_SERVER['PHP_SELF'] . "<br>";
echo $_SERVER['SERVER_NAME'] . "<br>";
echo $_SERVER['HTTP_HOST'] . "<br>";
echo $_SERVER['HTTP_USER_AGENT'] . "<br>";
echo $_SERVER['SCRIPT_NAME'] . "<br>";
?>

Catatan

  • Selain variabel superglobal $GLOBAL dan $_SERVER, PHP masih menyediakan variabel yang lain, akan kita bahas sebentar lagi.
  • Setiap variabel superglobal pasti ditulis menggunakan huruf kapital dan biasanya diawali dengan tanda underscore, seperti $_SESSION, $_FILES, $_SESSION dsb.