Tutorial Function Pada PHP

Reference

Materi ini memiliki 1 buah lampiran. Namun Anda tidak dapat mengakses lampiran karena belum terdaftar di kursus ini. Klik disini untuk mendaftar.

Reference bisa kita gunakan agar variable merujuk ke bagian memory yang sama dengan variable lain. Simbol yang digunakan adalah tanda &. Sebagai contoh, misalkan kita membuat variable $a yang isinya adalah 1. Kemudian kita buat variable $b yang isinya reference ke variable $a. Kita menuliskan kodenya menjadi $b = &$a.

Artinya variable $a dan variable $b merujuk ke nilai yang sama. Apabila kita merubah nilai variable $a, maka nilai variable $b turut berubah. Begitu juga apabila kita merubah nilai variable $b, maka nilai dari variable $a turut berubah.

Kita langsung coba praktek ya. Misalkan kita membuat variable $a dengan nilai 1. Kemudian kita buat variable $b yang merupakan reference ke variable $a. Pertama kita lihat dahulu nilai awal dari variable $a dan $b sebelum kita coba ubah. Kemudian kita coba ubah nilai variable $a menjadi 2, dan kita lihat lagi nilai kedua variable setelah diubah.

Kita coba jalankan kode ini. Perhatikan bahwa sebelum diubah, nilai variable $a dan $b adalah 1. Namun setelah diubah, nilai keduanya berubah menjadi 2. Padahal yang kita ubah hanya variable $a. Hal ini disebabkan karena variable $b adalah reference dari variable $a. Jadi keduanya merujuk ke memory yang sama. Kalau misalkan yang kita ubah adalah variable $b, maka yang berubah tetap kedua variable.

Ceritanya berbeda kalau kita tidak menggunakan reference. Variable $b hanya mengambil nilai yang disimpan oleh variable $a. Jadi kalau kita mengubah nilai variable $b, maka yang berubah hanya variable $b saja.

Kita kembalikan menjadi reference ya. Yang menariknya disini adalah saat ini ada 2 buah variable yang merujuk ke nilai yang sama. Bagaimana kalau salah satu variablenya kita hapus? Misalkan kita hapus variable $a ya. Caranya adalah kita panggil perintah unset($a). Apa yang terjadi?

Ternyata yang hilang hanya variable $a. Variable $b tetap ada dan tetap bisa mengakses nilai 1. Jadi nilai 1 ini hanya dihapus dari memory apabila kedua variable $a dan $b dihapus.

Secara default, PHP menggunakan cara Parsing Parameter By Value. Artinya, kalau kita merubah nilai parameter di dalam function, maka nilai argument di luar function tidak turut berubah. Sebagai contoh. Kita membuat function update dengan parameter $n. Di dalamnya kita ubah nilai parameter $n menjadi 2.

Di luar function, kita membuat variable $number dengan nilai 1. Lalu kita panggil function update dengan variable $number sebagai argument-nya. Secara default, nilai variable $number tidak berubah.

Namun kita bisa merubah cara Parsing Parameter menjadi Reference dengan cara menambahkan simbol & pada nama parameter. Artinya kalau kita merubah nilai parameter di dalam function, maka nilai argument di luar function turut berubah. Disini nilai $number berubah menjadi 2.

Langsung kita coba praktek. Ini adalah source code yang sama dengan slide tadi. Kita membuat function update dengan parameter $n. Lalu di dalamnya kita ubah nilai $n menjadi 2. Di luar function, kita buat variable global dengan nama $number dan nilai awal 1. Kita gunakan variable $number sebagai argument untuk memanggil function update. Lalu kita cetak nilai $number. Kira-kira nilai berapakah yang keluar?

Nah, kalau kita menggunakan function biasa, maka secara default yang digunakan adalah parsing parameter by value. Artinya yang dikirimkan ke dalam parameter hanyalah nilai angka 1. Jadi kalau nilai parameter diubah, maka tidak mengubah nilai pada variable di luar function. Nilai pada variable $number tetap 1.

Apabila kita hendak mengubahnya menjadi Parsing Parameter By Reference, maka kita harus menambahkan simbol reference pada nama parameter. Jadi parameternya kita ubah menjadi &$n. Dengan menggunakan reference, maka pada saat kita mengubah nilai parameter di dalam function, maka nilai pada variable di luar function turut berubah. Kalau kode ini kita jalankan, maka nilai yang tercetak adalah 2.

Selanjutnya. Pada PHP, kita juga bisa membuat function yang mengembalikan reference. Walaupun fitur ini tidak disarankan untuk digunakan, karena bisa menyebabkan kebingungan. Namun tidak ada salahnya kita pelajari.

Kalau tadinya pada waktu belajar Parsing Parameter By Reference, kita mengubah nilai parameter di dalam function untuk mengubah nilai variable di luar function. Pada Returning References cara penggunaannya dibalik. Kita mengubah nilai di luar function, dengan tujuan untuk mengubah nilai yang berada di dalam function.

Agar tidak bingung, kita langsung praktek saja ya. Disini ada function hello yang mengembalikan reference ke salah satu variable di dalam function. Perhatikan sebelum nama function terdapat simbol &. Di dalam function, kita membuat static variable $name dengan nilai Budi. Lalu kita cetak nilai dari variable $name. Dan terakhir kita kembalikan reference menuju variable $name.

Di luar function, kita membuat global variable $myName, yang kita gunakan untuk menyimpan reference dari function hello. Artinya global variable $myName ini adalah reference ke static variable $name di dalam function hello. Kalau function ini kita jalankan, maka kita mendapatkan hasil “Budi”.

Kalau misalkan kita ubah nilai variable $myName menjadi “Andi”, dan kemudian kita panggil lagi function hello. Maka apa yang terjadi? Kita mendapatkan hasil “Budi” dan “Andi”. Hal ini terjadi karena global variable $myName adalah reference ke static variable $name. Jadi kalau kita mengubah nilai pada $myName, maka nilai dari $name turut berubah. Ini adalah cara menggunakan Returning References.

Ada beberapa hal yang perlu diperhatikan disini. Yang pertama adalah variable yang berada di dalam function harus merupakan variable static. Kalau misalkan kata static dihilangkan, maka kita mendapatkan hasil “Budi” dan “Budi”. Pada saat kita keluar dari function hello, life cycle dari local variable $name dianggap selesai. Jadi pada saat kita memanggil function hello untuk kedua kalinya, maka PHP membuat variable baru $name dan mengisinya kembali dengan nilai “Budi”. Jadi apa yang kita ubah pada global variable $myName, sudah tidak berpengaruh pada local variable $name di pemanggilan function berikutnya.

Yang kedua, perhatikan bahwa kita harus menggunakan simbol & sebanyak dua kali, yaitu pada deklarasi function dan pemanggilan function. Kalau misalnya simbol & pada deklarasi function kita hapus, maka kita mendapatkan error notice bahwa simbol reference hanya bisa digunakan pada variable. Sedangkan kalau simbol & pada saat memanggil function kita hapus, tidak terjadi error namun reference-nya juga tidak terjadi. Oleh karena itu kita mesti ingat untuk menggunakan simbol & sebanyak dua kali.

2 Jam 41 Menit

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.