Tutorial Function Pada PHP
Variable Scope
Materi ini memiliki 1 buah lampiran. Namun Anda tidak dapat mengakses lampiran karena belum terdaftar di kursus ini. Klik disini untuk mendaftar.
Scope membahas mengenai siklus hidup dari variable. Setiap variable memiliki siklus hidupnya masing-masing, dimulai dari pembuatan variable baru untuk menyimpan suatu nilai di memory, hingga suatu saat variable tersebut dihapus dari memory agar memory bisa digunakan untuk menyimpan hal lain. Kapan variable tersebut dihapus dari memory? Nah, ini tergantung dari jenis scope-nya. Ada 3 jenis scope pada PHP, yaitu global, local, dan static.
Global Variable adalah variable yang dibuat di luar function. Variable ini akan ada terus ada sepanjang program PHP masih berjalan. Namun secara default-nya, global variable hanya bisa diakses di luar function, dan tidak bisa diakses dari dalam function. Kalau kita hendak mengakses global variable dari dalam function, maka kita harus mendeklarasikannya terlebih dahulu dengan menggunakan kata kunci global, atau kita bisa menggunakan variable khusus $GLOBALS.
Kita langsung coba praktek ya. Misalkan kita buat global variable dengan nama $name dan isinya adalah ‘Budi’. Ingat bahwa semua variable yang berada di luar function adalah global variable. Kemudian kita buat function hello, dan di dalamnya kita coba untuk mencetak nilai dari variable $name. Jangan lupa kita panggil function hello agar kode di dalam function dijalankan.
Kita coba jalankan. Dan kita mendapatkan pesan error undefined variable $name. Perhatikan di belakangnya ada nomor barisnya, dan kalau kita perhatikan nomor baris pada source code, ternyata merujuk ke echo $name yang berada di dalam function hello. Di dalam function, secara default kita tidak bisa menggunakan global variable. Apabila kita ingin menggunakan variable $name, maka sebelumnya kita harus deklarasikan terlebih dahulu. Caranya kita sebutkan dahulu kata kunci global diikut oleh nama variable $name. Kalau kita coba jalankan, sekarang function hello sudah bisa menggunakan variable $name.
Selain dengan menggunakan deklarasi dengan kata kunci global, kita bisa mengakses langsung global variable dengan menggunakan variable khusus $GLOBALS. Nah, variable $GLOBALS ini bentuknya adalah array ya. Sampai saat ini kita masih belum pernah membahas secara khusus mengenai array. Namun apabila kita ingin menggunakannya, maka kita menuliskan dahulu nama variablenya $GLOBALS diikuti oleh tanda kurung siku. Di dalam kurung siku, kita tuliskan nama variable kita dalam bentuk string. Kita coba jalankan. Dan sekarang kode kita juga bisa berjalan normal ya. Function tetap bisa mengakses global variable.
Kita lanjutkan ke scope kedua, yaitu local variable. Local variable adalah variable yang dibuat di dalam function. Local variable hanya bisa diakses diakses dari dalam function itu sendiri. Pada saat program kita keluar dari function, maka semua local variable secara otomatis dihapus dari memory. Nilai terakhir yang disimpan oleh variable tersebut ikut terhapus. Jadi pastikan bahwa kita tidak menyimpan data yang penting di dalam local variable.
Sebelum praktek, kita lanjutkan dahulu teori ke scope yang ketiga, yaitu static variable. Static variable dibuat dengan menggunakan kata kunci static. Dengan menjadikannya sebagai static, maka PHP tidak menghapus variable tersebut walaupun siklus hidupnya sudah berakhir. Jadi kalau kata kunci static ini kita padukan ke local variable, maka pada saat program keluar dari function, PHP tetap menyimpan static variable. Pada saat kita memanggil kembali function tersebut, kita bisa mengakses kembali nilai terakhir yang tersimpan dalam static variable.
Sekarang kita coba praktek ya. Misalkan variable $name ini kita buat di dalam function hello. Kalau kita echo di dalam function hello, maka PHP bisa menyebutkan bahwa isi dari variable $name adalah ‘Budi’. Namun kalau perintah echo-nya kita pindahkan keluar dari function, maka PHP sudah tidak mengenali variable $name, karena variable $name ini hanya bisa diakses di dalam function hello.
Misalkan kita buat function satu lagi ya, yaitu function test. Nah, perintah echo-nya kita pindahkan ke dalam function test. Kita panggil function-nya. Ternyata PHP tetap tidak mengenali variable $name ya. Karena $name hanya ada di dalam function hello, tidak ada di dalam function test.
Selanjutnya kita ubah ya. Misalkan kita membuat function counter. Di dalamnya kita buat variable $count dengan nilai 0. Kemudian $count kita tambahkan dengan 1. Dan terakhir kita coba echo ya. Kita panggil function counter. Dan kita mendapatkan nilai 1.
Kira-kira apa yang terjadi kalau function counter kita panggil secara berkali-kali? Misalnya kita panggil 3 kali. Maka kita mendapatkan hasil 1 1 1. Jadi setiap kali PHP masuk ke function counter, PHP membuat variable baru $count, diisi dengan nilai 0. Kemudian ditambahkan 1 ya, nilainya menjadi 1 dan dicetak ke layar. Kemudian PHP keluar dari function, ternyata variable $count ini dihapus. Jadi pemanggil function counter yang kedua, variable $count dimulai dari 0 lagi. Ditambahi 1 sehingga nilai yang dicetak menjadi 1. Jadi berapa kalipun kita memanggil counter, nilai yang tercetak akan selalu 1.
Kalau kita ingin variable $count ini tetap ada, walaupun PHP keluar dari function, maka harus mengubahnya menjadi static. Caranya adalah kita tambahkan kata kunci static di depan variable. Nah, kalau kita coba jalankan, sekarang kita mendapatkan hasil 1 2 3.
Jadi variable $count yang tadinya nilai awal 0 ditambah 1, maka pada pemanggilan pertama yang di-echo adalah 1 ya. Pada saat PHP keluar dari function counter, ternyata nilai dari variable $count tetap disimpan. Jadi pada saat kita memanggil lagi function counter, maka nilai awal dari variable $count ini sudah menjadi 1. Kita tambahkan 1 maka hasilnya menjadi 2. Dan pada saat pemanggilan yang ketiga, nilai awalnya 2 ditambahkan 1 menjadi 3. Maka yang ditampilkan adalah 3.
Jadi inilah fungsi dari variable static. Variable static tidak dihapus pada saat siklus hidupnya berakhir. Namun tetap ada dan bisa diakses ulang.
Dengan menggunakan fasilitas tanya jawab, maka Anda bisa bertanya dan akan dijawab langsung oleh instruktur kursus.
Anda belum terdaftar pada kursus ini sehingga tidak bisa mengajukan pertanyaan.