Setelah memahami cara membuat dan mengakses objek dalam PHP, dalam tutorial kali ini kita akan membahas salah satu aspek terpenting dalam Pemrograman Berbasis Objek (OOP), yakni Enkapsulasi (bahasa inggris: Encapsulation). Proses enkapsulasi diterapkan dengan menggunakan 3 jenis hak akses: Public, Protected dan Private.
Pengertian Enkapsulasi (Encapsulation)
Enkapsulasi Objek: Public, Protected dan Private
Pengertian Hak Akses: Public
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 | <?php // buat class laptop class laptop { // buat public property public $pemilik ; // buat public method public function hidupkan_laptop() { return "Hidupkan Laptop" ; } } // buat objek dari class laptop (instansiasi) $laptop_anto = new laptop(); // set property $laptop_anto ->pemilik= "Anto" ; // tampilkan property echo $laptop_anto ->pemilik; // Anto // tampilkan method echo $laptop_anto ->hidupkan_laptop(); // "Hidupkan Laptop" ?> |
Pengertian Hak Akses: Protected
Jika sebuah property atau method dinyatakan sebagai protected, berarti property atau method tersebut tidak bisa diakses dari luar class, namun bisa diakses oleh class itu sendiri atau turunan class tersebut.
Apabila kita mencoba mengakses protected property atau protected method dari luar class, akan menghasilkan error, seperti contoh 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 28 29 30 | <?php // buat class laptop class laptop { // buat protected property protected $pemilik ; // buat protected method protected function hidupkan_laptop() { return "Hidupkan Laptop" ; } } // buat objek dari class laptop (instansiasi) $laptop_anto = new laptop(); // set protected property akan menghasilkan error $laptop_anto ->pemilik= "Anto" ; // Fatal error: Cannot access protected property laptop::$pemilik // tampilkan protected property akan menghasilkan error echo $laptop_anto ->pemilik; // Fatal error: Cannot access protected property laptop::$pemilik // jalankan protected method akan menghasilkan error echo $laptop_anto ->hidupkan_laptop(); // Fatal error: Call to protected method laptop::hidupkan_laptop() // from context ?> |
Dalam contoh di atas, pemanggilan property $pemilik dan method hidupkan_laptop() dari luar class akan menghasilkan error.
Walaupun akses level protected tidak bisa diakses dari luar class, namun bisa diakses dari dalam class itu sendiri, berikut adalah contohnya:
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 28 | <?php // buat class laptop class laptop { // buat protected property protected $pemilik = "Anto" ; public function akses_pemilik() { return $this ->pemilik; } protected function hidupkan_laptop() { return "Hidupkan Laptop" ; } public function paksa_hidup() { return $this ->hidupkan_laptop(); } } // buat objek dari class laptop (instansiasi) $laptop_anto = new laptop(); // jalankan method akses_pemilik() echo $laptop_anto ->akses_pemilik(); // "Anto" // jalankan method paksa_hidup() echo $laptop_anto ->paksa_hidup(); // "Hidupkan Laptop" ?> |
Hampir sama dengan contoh kita sebelumnya, property $pemilik di deklarasikan sebagai protected, sehingga pengaksesan dari luar class akan menghasilkan error. Oleh karena itu, saya membuat sebuah public method yang akan menampilkan hasil property $pemilik, yakni method akses_pemilik().
Begitu juga dengan method hidupkan_laptop() yang tidak bisa diakses secara langsung. Saya menambahkan method paksa_hidup() yang secara internal akan mengakses method hidupkan_laptop().
Selain dari dalam class itu sendiri, property dan method dengan hak akses protected juga bisa diakses dari class turunan (Kita akan membahas tentang penurunan class dalam tutorial lain):
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | <?php // buat class komputer class komputer{ // property dengan hak akses protected protected $jenis_processor = "Intel Core i7-4790 3.6Ghz" ; } // buat class laptop class laptop extends komputer{ public function tampilkan_processor() { return $this ->jenis_processor; } } // buat objek dari class laptop (instansiasi) $laptop_baru = new laptop(); // jalankan method echo $laptop_baru ->tampilkan_processor(); // "Intel Core i7-4790 3.6Ghz" ?> |
Pada kode di atas, walaupun method $jenis_processor di set sebagai protected pada class komputer, tetapi masih bisa diakses dari class laptop yang merupakan turunan dari class komputer.
Pengertian Hak Akses: Private
Hak akses terakhir dalam konsep enkapsulasi adalah private. Jika sebuah property atau method di-set sebagai private, maka satu-satunya yang bisa mengakses adalah class itu sendiri. Class lain tidak bisa mengaksesnya, termasuk class turunan.
Sebagai contoh, berikut adalah hasil yang di dapat jika kita mengakses property dan method dengan level private:
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 28 29 30 31 32 | <?php // buat class komputer class komputer { // property dengan hak akses protected private $jenis_processor = "Intel Core i7-4790 3.6Ghz" ; public function tampilkan_processor() { return $this ->jenis_processor; } } // buat class laptop class laptop extends komputer{ public function tampilkan_processor() { return $this ->jenis_processor; } } // buat objek dari class laptop (instansiasi) $komputer_baru = new komputer(); $laptop_baru = new laptop(); // jalankan method dari class komputer echo $komputer_baru ->tampilkan_processor(); // "Intel Core i7-4790 3.6Ghz" // jalankan method dari class laptop (error) echo $laptop_baru ->tampilkan_processor(); // Notice: Undefined property: laptop::$jenis_processor ?> |
Dalam kode di atas, saya membuat 2 buah class, yakni class komputer, dan class laptop. Class laptop merupakan turunan dari class komputer. Di dalam class komputer terdapat property $jenis_processor dengan akses level private. Di dalam class komputer dan class laptop, saya membuat method tampilkan_processor() yang digunakan untuk mengakses property $jenis_processor.
Pengaksesan method tampilkan_processor() dari objek $komputer_baru sukse ditampilkan karena berada di dalam satu class dimana property $jenis_processor berada.
Akan tetapi, jika method tampilkan_processor() diakses dari objek $laptop_baru yang merupakan turunan dari class komputer, PHP akan mengeluarkan error karena property $jenis_processor tidak dikenal.
Akses level private sering digunakan untuk menyembunyikan property dan method agar tidak bisa diakses di luar class.
Darsu_XI RPL 2_PBO
BalasHapusAlbia Fabiansyah_XI RPL2_PBO
BalasHapusMuhammad Rezza_XI RPL2_PBO
BalasHapusMuhammad Fahrezi putra bachtiar_XI RPL2_PBK
BalasHapusMuhammad Zahwan Sidqi_XI RPL 2_PBO
BalasHapusChesya Salsabila Aprilia_XI RPL 2_PBO
BalasHapusJenal abidin XI_RPL_2_PBO
BalasHapusAprilianti XI_RPL_2_PBO
BalasHapus