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:
globallocalstatic
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:
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:
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 diglobalscope dari dalam function.
Contoh:
<?php
// Menggunakan keyword global
$nama = "Jung Kook";
function halo(){
global $nama;
echo "Halo $nama\n";
}
halo();
?>
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
$_GLOBALSadalah 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.
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
- Awalnya kita membuat variabel
$namadan$umur - Lalu kita membuat function
tambah_umur()yang berfungsi mengambil variabal$umuryang diakses dengan variabel$GLOBAL['umur']dan menaikkan nilainya dengan operator++. - Terakhir kita tampilkan hasilnya menggunakan
echo.
Variabel $_SERVER
- Variabel
$_SERVERmenyediakan informasi tentang header, path dan lokasi skrip. - Variabel
$_SERVERmenyediakan 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
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:80lalu Enter. - Semisal saya menyimpan file nya dengan nama
server02.php, maka buka di browser dan ketikkan pada address barlocalhost/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
$GLOBALdan$_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,$_SESSIONdsb.