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(); ?>
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.
thanks gan infonya, dari pengertian-pengertian di atas ane jadi semakin faham tentang pemrograman
Terimakasih juga atas kunjungannya, mudah-mudahan apa yang saya tulis bisa bermanfaat :)
super sekali artikel nya. membantu banget
Terimakasih komentarnya gan… saya juga senang artikelnya bisa bermanfaat… :)
Makasih tutorialnya
sangat bermanfaat :)
jika static nya dihapus, brarti nilai $a akan bernilai 1 donk gan… kan $a = $a + 1 ? #CMIIW
Hehe, betul gan, nilai $a akan selalu 1 karena ada operasi $a = $a + 1. Terimakasih buat koreksinya..
Saya mencoba menuliskan code berikut ;
<?php
global $a = 7;
function coba()
{
$a;
global $b;
$b=15;
echo $a; //7
echo $b; //15
}
coba();
echo $a; //7
echo $b; //15
?>
muncul pesan error untuk variabel $a , apakah dapat disimpulkan bahwa global variabel hanya dapat di letakan di dalam function saja ? Mohon Pencerahanya , dan Tutorial-Tutorial Di sini cukup jelas dan mudah dipahami,.. Sangat Bermanfaat – Terima Kasih
Kalau diletakkan di luar function, keyword global bisa dibilang g berfungsi gan. Soalnya keyword ini digunakan untuk mengakses variabel global dari dalam local scope.
Yup bisa dibilang seperti itu. PHP akan komplain kalau keyword global di tulis untuk variabel yang memang sudah global :)
Mantap bro penjelasannya, jadi lumanyan mudeng sekarang
Keren gan materi-materinya..
Mohon maaf sebelumnya ada yang mau ane tanyain nih gan,
ane mau nanya yang variabel scope itu jawabannya 5 karena variabel global itu tingkatannya lebih tinggi ya gan dari variabel scope? makanya pas di run hasilnya 5 bukan 10?
Sebenarnya bukan tingkatannya yang lebih tinggi gan, tapi di global scope variabel local scope itu tidak ditemukan atau bisa dibilang "tersembunyi".
Oh gitu gan… oke terimakasih atas penjelasannya gan, nanti ane mau pahamim lagi
udah nyampe sini aja, jadi makin ngerti tentang PHP. makasih
Sama2.. semoga bisa bermanfaat.
makasih ilmunya, bermanfaat sekali
bang, tapi kalo penggunaan static dalam objek gimana hasilnya bang, apa kah sama kayak variable static $a tadi ?
contoh code yang saya maksut :
class itung{
static $a = 0;
static function umur (){
return $this->$a+7;
}
}
echo itung::umur();
Tidak, fungsinya berbeda. Jika method umur() itu dipanggil beberapa kali, hasilnya tetap 7.
Selain itu untuk mengakses static property dari dalam class, kita memakai perintah self::, seperti return self::$a+7, bukan return $this->$a+7.
Penjelasannya mudah dipahami mantav gan!