Setelah pada artikel sebelumnya kita bahas tentang pengertian construct dan destruct pada OOP PHP, maka pada artikel kali ini kita akan bahas tentang salah satu aspek yang paling penting dalam Pemrograman Berbasis Objek (OOP), yaitu enkapsulasi (atau dalam bahasa inggrisnya encapsulation). pengertian public, private dan protected pada method dan property OOP. Pada artikel kali ini kita akan bahas tentang pengertian enkapsulasi.
Enkapsulasi adalah salah satu hal yang paling penting didalam pemrograman berorientasi objek (OOP). Karena tahap enkapsulasi lah yang menentukan pemberian hak akses pada setiap property atau method. Enkapsulasi pada OOP ini terdiri dari 3, yaitu public, private, dan protected.
Kita bisa menentukan property dan method menjadi public, protected dan private sesuai dengan keinginan dan kebutuhan. Lebih detailnya lagi tentang cara penggunaan dan juga penulisan dari public, private dan protected akan kita bahas pada artikel kali ini. Tapi sebelumnya kita akan bahas terlebih dahulu tentang pengertian enkapsulasi OOP PHP. Yuk simak terus artikelnya.
Â
PENGERTIAN ENKAPSULASI (ENCAPSULATION)
Enkapsulasi atau encapsulation adalah sebuah metode untuk  mengatur struktur class dengan cara menyembunyikan alur kerja dari class tersebut. Hal ini bertujuan untuk menyembunyikan informasi dari method dan property dengan alasan keamanan.
Struktur class yang dimaksud adalah property dan method, sehingga hanya property dan method tertentu saja yang bisa diakses dari luar class. Enkapsulasi juga dikenal dengan istilah “informating hidingâ€.
Dengan enkapsulasi, kita bisa memilih property dan method apa saja kah yang boleh diakses, dan mana saja yang tidak boleh diakses. Dengan menghalangi kode program lain untuk menggubah property tertentu, class menjadi lebih terintegrasi dan juga menghindari kesalahan ketika seseorang mencoba  untuk mengubahnya. Seorang programer yang merancang class bisa menyediakan property dan method khusus yang memang ditujukan untuk akses diluar.
Â
Untuk membatasi juga memberikan hak akses kepada property dan method pada sebuah class, di dalam OOP terdapat 3 kata kunci, yaitu:
1. Hak Akses Public
Jika sebuah method ataupun property dinyatakan sebagai public, maka method dan property tersebut dapat diakses dari luar ataupun dari dalam class tersebut, termasuk class turunan. Namun perlu kita ketahui, pada method dan juga property yang tidak ditetapkan hak aksesnya menggunakan public, private dan protected, maka hak akses pada method dan property tersebut adalah secara default menjadi public. Sama halnya seperti penulisan OOP yang sudah kita pelajari sebelumnya.
Contoh penggunaan dari hak akses public:
Perhatikan contoh diatas, terdapat property dan method yang kita tetapkan dengan public. Maka karena method dan propertynya kita tetapkan sebagai public, maka kita akses dari luar class ataupun dari class turunan.
Â
2. Hak Akses Protected
 Jika sebuah property ataupun method dinyatakan sebagai protected, berarti property ataupun method tersebut tidak bisa diakses dari luar class. Namun bisa diakses oleh class itu sendiri atau turunan dari class tersebut. Apabila kita mencoba mengakses protected property atau protected method dari luar class, maka akan menghasilkan error.
Contoh penggunaan dari hak akses protected:
Perhatikan contoh diatas, pada contoh diatas pemanggilan property $pemilik dan method hidupkan_mobil() dari luar class akan menghasilkan error.
Â
3. Hak Akses Private
Private adalah sebuah hak akses yang melarang method atau property yang menggunakannya dilarang akses dari luar class. Jadi hak akses private ini hanya bisa diakses dari dalam class itu sendiri.
Jadi, jika sebuah property atau method dijadikan sebagai private, maka satu-satunya yang bisa mengakses adalah class itu sendiri. Class lain tidak bisa mengaksesnya, termasuk class turunannya. Akses private ini sering digunakan untuk menyembunyikan property dan method agar tidak bisa diakses dari luar class.
Contoh penggunaan dari hak akses private:
Dalam contoh diatas, kita membuat 2 buah class yaitu class komputer dan class laptop. Class laptop merupakan turunan dari class komputer. Didalam class komputer terdapat property $jenis_processor dengan akses level private. Didalam class komputer dan class laptop juga kita membuat method tampilkan_processor() yang digunakan untuk mengakses property $jenis_processor.
Pengaksesan method tampilkan_processor() dari objek $komputer_baru sukses ditampilkan karena berada didalam satu class dimana property $jenis_processor berada.
Tapi, 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.
Ketiga kata kunci tersebut diletakan sebelum nama property ataupun sebelum nama method.
Â