Tutorial Belajar OOP PHP Part 5: Pengertian dan Fungsi Variabel $this dalam Pemrograman Objek

Posted on

Setelah pada panduan OOP PHP sebelumnya kita mempelajari mengenai Pengertian Enkapsulasi Objek (Public, Protected dan Private), pada panduan kali ini kita akan membahas Pengertian dan Fungsi Variabel $this dalam Object Oriented Programming PHP.


Pengertian dan Manfaat Variabel $this pada OOP

Variabel $this yaitu sebuah variabel khusus pada OOP PHP yang digunakan selaku penunjuk kepada objek, ketika kita mengaksesnya dari pada class. Pada manual PHP, $this disebut dengan istilah: pseudo-variable.

Konsep variabel $this mungkin sedikit susah dimengerti, terutama sekiranya sahabat belum pernah menggunakan Pemrograman dengan objek sebelumnya. Apabila penjelasan pada panduan ini merancang bingung, silahkan dipelajari secara perlahan dari awal.

Bagi lebih mempermudah pemahaman, kita akan bahas menggunakan contoh.

Berikut yaitu class laptop dengan beberapa property dan method.

Pada kode di atas, saya merancang class laptop dengan 3 property, yakni: $pemilik, $merk dan $ukuran_layar. Ketiga property ini belum mempunyai nilai. Di pada class laptop pun terdapat 2 buah method, yakni hidupkan_laptop() dan matikan_laptop(), kedua method ini akan mengembalikan nilai string. Seluruh property dan method dari class laptop mempunyai hak akses public, sehingga dapat diakses dari luar class.

Setelah merancang class, saya kemudian men-instansiasi-nya ke pada 2 buah objek $laptop_anto dan $laptop_andi.

Sekiranya sahabat menjalankan kode program di atas, di pada web browser belum tampil apa-apa, karena saya belum memanggil method atau property apapun dari kedua objek.

Berikutnya, saya ingin menambahkan isi property $pemilik kepada kedua objek, berikut yaitu kode yang diperlukan:

Dengan petunjuk di atas, property $pemilik di masing-masing objek telah berisi nilai. Bagi menampilkan nilai dari objek tersebut, kita tinggal mengaksesnya dengan kode berikut:

Hingga di sini, kita telah memahami cara mengakses property objek dari objek itu sendiri, yakni dengan menggunakan format:

Bagaimana sekiranya property tersebut telah di-set nilainya dari pada class? Berikut yaitu perubahan class laptop:

Class laptop di atas saya revisi sehingga hanya mempunyai 1 property dan 1 method. Perhatikan bahwa property $pemilik telah diisi di level class, sehingga di ketika perancangan objek (instansiasi), seluruh objek akan mempunyai nilai ini.

Objek $laptop_baru dan $laptop_lama sama-sama berasal dari class laptop, dan nilai property $pemilik sama- sama berisi “Andi”.

Lebih jauh lagi, pemanggilan method pun akan menghasilkan nilai yang sama:

Kita akan masuk ke pada bagian terpenting. Bagaimana sekiranya saya ingin ketika method hidupkan_laptop() dipanggil, yang akan ditampilkan yaitu : “Hidupkan Laptop Andi“?

Apabila sahabat telah mempelajari dasar-dasar PHP, pastinya cara sangat jelas yaitu dengan mengubah return string di pada method hidupkan_laptop() selaku berikut:

Cara tersebut tak salah, dan akan menghasilkan nilai “Hidupkan Laptop Andi” di ketika pemanggilan method hidupkan_laptop(). Tetapi, bukankah kita telah mempunyai property $pemilik dengan nilai “Andi”? kita dapat menggunakan property ini dan menambahkannya ke pada method hidupkan_laptop.

Bagi mencoba ide tersebut, silahkan ubah contoh class laptop sebelumnya menjadi berikut:

Sekiranya sahabat menjalankan kode di atas, hasil yang didapat yaitu:

Dari penjelasan error PHP, dinyatakan bahwa “variabel pemilik tak terdefinisi di baris 11”. Baris tersebut yaitu baris dimana kita menampilkan “Hidupkan Laptop $pemilik” dengan method
hidupkan_laptop().

Apa yang terjadi? Bukankah $pemilik=”Andi” telah terdefinisi di property class?

Inilah yang dimaksud pada awal panduan kali ini, kita sedang mencoba mengakses property objek dari pada class. Sekiranya sahabat bingung dengan pengertian ini, sahabat tak sendiri. Saya pun kesulitan pada memahami konsep ini di pertama-tama kali belajar OOP.

Bagi memahaminya, kita mesti ingat bahwa class hanyalah sebuah “blue print” atau kerangka. Seluruh property dan method nantinya akan diakses dari pada objek, bukan dari pada class. Di ketika proses instansiasi class, seluruh property dan method akan “dicopy” ke pada objek.

Petunjuk: $laptop_baru = new laptop() akan merancang objek $laptop_baru mempunyai property $pemilik dan method hidupkan_laptop() (sesuai dengan kerangka dari class laptop). Seluruh petunjuk lanjutan yang kita lakukan berada di pada objek $laptop_baru, bukan di pada class laptop.

Ketika kita menjalankan method hidupkan_laptop(), objek $laptop_baru akan menemui baris petunjuk:

variabel $pemilik di sini tak terdefinisi karena $pemilik berada di pada konteks class, bukan objek.

Bagi mengatasi masalah ini, kita mesti mengubah definisi method hidupkan_laptop() menjadi:

Variabel $this merujuk kepada objek yang sedang menginstansiasi class.

Sekiranya di pada class laptop kita merancang:

Karenanya di pada objek $laptop_baru, akan menjadi:

Sekiranya kita mempunyai objek lain misalkan $laptop_lama, karenanya petunjuk tersebut akan dijalankan menjadi:

Perhatikan bahwa di level objek, variabel $thisdijalankan’ menjadi objek ketika ini.

Bagi menguji pemahaman kita, silahkan pelajari kode berikut ini:

Tanpa menjalani kode program tersebut, silahkan tebak apa hasil yang akan ditampilkan dari petunjuk: echo $laptop_lama->hidupkan_laptop() yang berada di baris terakhir, dan kenapa hasilnya bukan “Hidupkan Laptop Arie” ?

Sekiranya sahabat dapat menebak hasil ahir dengan benar dan dapat menjelaskan kenapa hasilnya bukan “Hidupkan Laptop Arie”, karenanya sahabat telah memahami diantara konsep terpenting pada Pemrograman dengan objek.


Sekiranya di pada panduan kali ini kita membahas pengertian dan fungsi variabel $this, pada panduan berikutnya kita akan membahas variabel $this secara lebih jauh, dan melihat cara penggunaan pseudo-variable $this dalam pemrograman objek PHP.


Sumber https://www.duniailkom.com/