Langsung ke konten utama

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

 

Pengertian dan Fungsi Variabel $this dalam OOP

Variabel $this adalah sebuah variabel khusus dalam OOP PHP yang digunakan sebagai penunjuk kepada objek, ketika kita mengaksesnya dari dalam class. Dalam manual PHP, $this disebut dengan istilah: pseudo-variable.

Untuk lebih memudahkan pemahaman, kita akan bahas menggunakan contoh.

Berikut adalah class laptop dengan beberapa property dan method.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
<?php
  
// buat class laptop
class laptop {
  
   // buat property untuk class laptop
   public $pemilik;
   public $merk;
   public $ukuran_layar;
  
   // buat method untuk class laptop
   public function hidupkan_laptop() {
     return "Hidupkan Laptop";
   }
   
   public function matikan_laptop() {
     return "Matikan Laptop";
   }
}
  
// buat objek dari class laptop (instansiasi)
$laptop_anto = new laptop();
$laptop_andi = new laptop();
?>

Dalam kode di atas, saya membuat class laptop dengan 3 property, yakni: $pemilik, $merk dan $ukuran_layar. Ketiga property ini belum memiliki nilai. Di dalam class laptop juga terdapat 2 buah method, yakni hidupkan_laptop() dan matikan_laptop(), kedua method ini akan mengembalikan nilai string. Seluruh property dan method dari class laptop memiliki hak akses public, sehingga bisa diakses dari luar class.

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

Jika anda menjalankan kode program di atas, di dalam web browser belum tampil apa-apa, karena saya belum memanggil method atau property apapun dari kedua objek.

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

1
2
$laptop_anto->pemilik = "Anto";
$laptop_andi->pemilik = "Andi";

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

1
echo $laptop_anto->pemilik; // "Anto"

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

1
$nama_objek->nama_property

Bagaimana jika property tersebut telah di-set nilainya dari dalam class? Berikut adalah perubahan class laptop:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<?php
// buat class laptop
class laptop {
  
   // buat property untuk class laptop
   public $pemilik="Andi";
  
   // buat method untuk class laptop
   public function hidupkan_laptop() {
     return "Hidupkan Laptop";
   }
}
  
// buat objek dari class laptop (instansiasi)
$laptop_baru = new laptop();
$laptop_lama = new laptop();
?>

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

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

1
2
echo $laptop_baru->pemilik; // Andi
echo $laptop_lama->pemilik; // Andi

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

1
2
echo $laptop_baru->hidupkan_laptop(); // "Hidupkan Laptop"
echo $laptop_lama->hidupkan_laptop(); // "Hidupkan Laptop"

 

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

Apabila anda telah mempelajari dasar-dasar PHP, tentunya cara paling jelas adalah dengan mengubah return string di dalam method hidupkan_laptop() sebagai berikut:

1
2
3
public function hidupkan_laptop() {
     return "Hidupkan Laptop Andi";
}

Cara tersebut tidak salah, dan akan menghasilkan nilai “Hidupkan Laptop Andi” pada saat pemanggilan method hidupkan_laptop(). Tetapi, bukankah kita telah memiliki property $pemilik dengan nilai “Andi”? kita bisa menggunakan property ini dan menambahkannya ke dalam method hidupkan_laptop.

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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<?php
// buat class laptop
class laptop {
  
   // buat property untuk class laptop
   public $pemilik="Andi";
   public $merk;
  
   // buat method untuk class laptop
   public function hidupkan_laptop() {
     return "Hidupkan Laptop $pemilik";
   }
}
  
// buat objek dari class laptop (instansiasi)
$laptop_baru = new laptop();
  
echo $laptop_baru->hidupkan_laptop(); // "Hidupkan Laptop"
?>

Jika anda menjalankan kode di atas, hasil yang didapat adalah:

1
2
Notice: Undefined variable: pemilik in
D:\xampp\htdocs\oop_php\belajar_objek.php on line 11 Hidupkan Laptop

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

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

Inilah yang dimaksud dalam awal tutorial kali ini, kita sedang mencoba mengakses property objek dari dalam class. Jika anda bingung dengan pengertian ini, anda tidak sendiri. Saya juga kesulitan dalam memahami konsep ini pada pertama kali belajar OOP.

Untuk memahaminya, kita harus ingat bahwa class hanyalah sebuah “blue print” atau kerangka. Seluruh property dan method nantinya akan diakses dari dalam objek, bukan dari dalam class. Pada saat proses instansiasi class, seluruh property dan method akan “dicopy” ke dalam objek.

Perintah: $laptop_baru = new laptop() akan membuat objek $laptop_baru memiliki property $pemilik dan method hidupkan_laptop() (sesuai dengan kerangka dari class laptop). Seluruh perintah lanjutan yang kita lakukan berada di dalam objek $laptop_baru, bukan di dalam class laptop.

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

1
“Hidupkan Laptop $pemilik

variabel $pemilik di sini tidak terdefinisi karena $pemilik berada di dalam konteks class, bukan objek.

Untuk mengatasi masalah ini, kita harus mengubah definisi method hidupkan_laptop() menjadi:

1
"Hidupkan Laptop $this->pemilik";

Variabel $this merujuk kepada objek yang sedang menginstansiasi class.

Jika di dalam class laptop kita membuat:

1
"Hidupkan Laptop $this->pemilik";

Maka di dalam objek $laptop_baru, akan menjadi:

1
"Hidupkan Laptop $laptop_baru->pemilik";

Jika kita memiliki objek lain misalkan $laptop_lama, maka perintah tersebut akan dijalankan menjadi:

1
"Hidupkan Laptop $laptop_lama->pemilik";

Perhatikan bahwa pada level objek, variabel $thisdijalankan’ menjadi objek saat ini.

Untuk menguji pemahaman kita, silahkan pelajari kode berikut ini:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
<?php
// buat class laptop
class laptop {
  
   // buat property untuk class laptop
   public $pemilik="Andi";
  
   // buat method untuk class laptop
   public function hidupkan_laptop() {
     return "Hidupkan Laptop $this->pemilik";
   }
}
  
// buat objek dari class laptop (instansiasi)
$laptop_baru = new laptop();
  
echo $laptop_baru->hidupkan_laptop(); // "Hidupkan Laptop Andi";
  
//ubah isi property $pemilik pada objek $laptop_baru
$laptop_baru->pemilik="Arie";
  
echo $laptop_baru->hidupkan_laptop(); // "Hidupkan Laptop Arie";
 
// buat objek baru dari class laptop dan panggil hidupkan_laptop()
$laptop_lama = new laptop();
echo $laptop_lama->hidupkan_laptop();
?>

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

Jika anda bisa menebak hasil akhir dengan benar dan bisa menjelaskan kenapa hasilnya bukan “Hidupkan Laptop Arie”, maka anda telah memahami salah satu konsep terpenting dalam Pemrograman berbasis objek.

 

 

Komentar

Postingan populer dari blog ini

Pengertian MVC (Model, View & Controller)

  Pengertian MVC MVC adalah sebuah arsitektur perancangan kode program. Tujuannya untuk memecah kode program utama menjadi 3 komponen terpisah dengan tugas yang spesifik. Ketiga komponen tersebut adalah:  1. Model(Pengaksesan database) 2. View(Tampilan design/User Interface) 3. Controller(Alur logika program) Gabungan Model-View-Controller inilah yang disingkat sebagai MVC. Ide awal dari perlunya konsep MVC adalah agar aplikasi yang dibuat bisa mudah dikelola dan dikembangkan, terutama untuk aplikasi besar. Sebagai contoh, seorang web designer bisa fokus merancang bagian View saja, yakni tampilan design website yang terdiri dari kode HTML dan CSS plus sedikit JavaScript. Kode program untuk berkomunikasi dengan database bisa ditangani oleh programmer yang secara khusus bagian Model. Serta programmer lain mengatur alur logika program di bagian Controller. Dengan pemisahan seperti ini, kerja tim menjadi mudah dikelola. Selain itu dengan penerapan konsep MVC yang baik, setiap bag...

Spesifikasi Laptop ASUS X441B

Asus X441BA-GA901T merupakan notebook dengan layar 14.0 Inch (16:9) LED backlit HD (1366x768) 60Hz Glare Panel with 45% NTSC dan dilengkapi dengan sistem operasi Windows 10. Notebook ini dilengkapi dengan prosesor AMD Dual-Core A9-9420 APU (3.00 – 3.60 GHz, 1 MB Cache). Spesifikasi :    -Processor : AMD Dual-Core A9-9420 APU (3.00 – 3.60 GHz, 1 MB Cache) -Kamera : VGA Web Camera -VGA : AMD RadeonTM R5 Graphics -Baterai : 3 Cells 36 Whrs Battery -Fitur : Bluetooth, WiFi, DVD Super Multi, Multi-format card reader (SD/SDHC), 1 -x COMBO audio jack, 1 x VGA port, 1 x Type A USB3.0 (USB3.1 GEN1), 1 x Type -C USB3.0 (USB3.1 GEN1), 1 x USB 2.0 port(s), 1 x RJ45 LAN Jack for LAN insert, 1 x HDMI -Layar : 14.0" (16:9) LED backlit HD (1366x768) 60Hz Glare Panel with 45% NTSC Operation System (OS) : Windows 10   Kesimpulan : Menurut saya ini laptop lumayan worth it untuk dipakai buat programming dan saya sedang menggunakannya sekarang. Akan tetapi ketika ingin men develop android di...

5 Negara Dengan Koneksi Internet Tercepat

1. Australia Koneksi internet di Australia termasuk dalam peringkat 5 dengan koneksi internet tercepat dunia dengan kecepatan 26,25 Mbps. Koneksi wifi cepat dan gratis dapat ditemukan dengan mudah di negara tersebut. Boim sudah membuktikannya sendiri ketika berkunjung ke Australia. Dikabarkan Australia memiliki koneksi wifi gratis yang meliputi daerah Central Business Distric Melbournse seluas 600.000 meter persegi. 2. Singapura Negara tetangga kita Singapura juga termasuk dalam negara dengan koneksi internet tercepat dunia dengan kecepatan 30,05 Mbps. Menurut kabar, Singapura sedang mengembangkan sistem koneksi 5G untuk kecepatan jaringan internet. Kabar dari teknologi ini sudah banyak tersebar sejak tahun 2014 lalu. 3. Korea Selatan Posisi teratas ternyata ditempati oleh Korea Selatan dengan kecepatan 37,5 Mbps. Saking kencangnya kecepatan koneksi internet ini, untuk mengunduh data sebesar 5 gb, pengguna hanya membutuhkan waktu sekitar 2,5 menit saja. Hal ini dipengaruhi juga oleh k...