Enkapsulasi: public, protected dan private pada PHP
Programming
Pada Pemrograman Berbasis Objek termasuk pada PHP ada sebuah istilah yang dikenal dengan Enkapsulasi (bahasa Inggris: Encapsulation). Enkapsulasi adalah pengaturan "hak akses" yang diterapkan pada sebuah Property ataupun Method yang berada dalam Class. Enkapsulasi akan menentukan apakah sebuah objek (property dan method) akan dapat diakses secara publik, apakah Objek hanya dapat diakses didalam Class dan turunannya saja atau Objek hanya bisa diakses didalam Class utama saja.
Apakah maksud dari "public" itu?
Jika pada Objek (Property dan Method) memiliki sifat publik (public) artinya Objek tersebut dapat diakses secara universal (dapat diakses dimanapun).
Berikut contoh penggunaan keyword public pada OOP:
Berikut contoh penggunaan Enkapsulasi `protected` yang salah:
Berikut contoh penggunaan Objek dengan keyword protected yang benar.
Berikut contoh penggunaan private keyword:
Penggunaan hak akses dengan menerapkan keyword Enkapsulasi sangat bermanfaat untuk memberikan hak akes kepada setiap Objek yang dipilih.
Menyeleksi Objek manakah yang boleh digunakan secara universal atau publik, Objek mana sajakah yang hanya boleh diakses didalam Class dan Objek manakah yang bersifat rahasia dan tidak boleh diganggu gugat nilainya.
Keyword Enkapsulasi
Dalam teknik Enkapsulasi pada PHP dikenal 3 keyword yang dapat menentukan hak akses sebuah Objek, keyword atau kata kunci tersebut terdiri dari:- public
- protected
- private
public keyword
Dalam teknik OOP, jika terdapat sebuah property ataupun method tanpa memiliki keyword enkapsulasi maka Property ataupun Method tersebut secara default akan dianggap memiliki keyword public.<?php
class lampu {
var $jenis = 'LED';
function nyalakan(){
return 'Lampu dinyalakan';
}
}
?>
Contoh diatas merupakan penulisan Property dan Method dengan tidak memakai keyword Enkapsulasi apapun. Namun, seperti yang sudah saya katakan `Secara default contoh diatas tepatnya Property dan Method akan bersifat public.
Apakah maksud dari "public" itu?
Jika pada Objek (Property dan Method) memiliki sifat publik (public) artinya Objek tersebut dapat diakses secara universal (dapat diakses dimanapun).
Berikut contoh penggunaan keyword public pada OOP:
<?php
class lampu {
public $jenis = 'LED';
function nyalakan(){
return 'menyala';
}
function matikan(){
return 'dimatikan';
}
}
$lampu = new lampu();
echo 'Lampu '.$lampu->jenis.' telah '.$lampu->nyalakan().''; //Lampu LED telah menyala
?>
Dengan menggunakan keyword public sebuah objek akan dapat diakses didalam Class itu sendiri, diluar Class ataupun diakes didalam turunan Class atau Sub-class.
protected keyword
Objek dengan protected keyword akan memiliki hak akses yang dilindungi. Maksudnya adalah Objek tersebut hanya bisa diakses didalam Class utama dan sub-classnya saja. Jika Objek dipaksakan diakses diluar Class maka PHP akan mengeluarkan pesan kesalahan alias Fatal error.Berikut contoh penggunaan Enkapsulasi `protected` yang salah:
<?php
class lampu {
protected $jenis = 'LED';
protected function nyalakan(){
return 'dinyalakan';
}
protected function matikan(){
return 'dimatikan';
}
}
$lampu = new lampu();
echo 'Lampu '.$lampu->jenis.' telah '.$lampu->nyalakan().' ';
?>
Jika dijalankan script diatas akan menghasilkan Fatal error, kenapa? Karena pemanggilan Objek yang salah. Sudah diketahui bahwa Objek dengan keyword protected hanya bisa dipanggil didalam Class dan Sub-class saja.
Berikut contoh penggunaan Objek dengan keyword protected yang benar.
<?php
class lampu {
protected $jenis = 'LED';
protected function nyalakan(){
return 'dinyalakan';
}
protected function matikan(){
return 'dimatikan';
}
/*Buat method public*/
public function gantiLampu(){
return 'Lampu '.$this->jenis.' telah diganti';
}
}
/*Buat class turunan atau sub-class*/
class lampuBaru extends lampu {
public function nyalakan(){
return 'Lampu baru '.$this->nyalakan().'';
}
}
$lampu = new lampu();
$lampuBaru = new lampuBaru();
echo $lampu->gantiLampu(); //Lampu LED telah diganti
echo $lampuBaru->nyalakan(); //Lampu baru dinyalakan
?>
Sekarang bisa terlihat jelas cara penggunaan Objek dengan keyword protected.
private keyword
Untuk private keyword lebih ketat lagi dari protected keyword, pasalnya jika suatu Objek menggunakan private keyword maka Objek tersebut hanya bisa diakses didalam Class utama saja.Berikut contoh penggunaan private keyword:
<?php
class lampu {
private $jenis = 'LED';
private function nyalakan(){
return 'dinyalakan';
}
private function matikan(){
return 'dimatikan';
}
public function rincianKegiatan(){
return 'Lampu '.$this->jenis.' terakhir '.$this->matikan().' tadi pagi';
}
}
$lampu = new lampu();
echo $lampu->rincianKegiatan(); //Lampu LED terakhir dimatikan tadi pagi
?>
Dengan menggunakan hak akses private pada sebuah Objek maka, kita bisa melindungi nilai dari Objek tersebut supaya tidak dapat diubah atau tidak sengaja terubah.
Penggunaan hak akses dengan menerapkan keyword Enkapsulasi sangat bermanfaat untuk memberikan hak akes kepada setiap Objek yang dipilih.
Menyeleksi Objek manakah yang boleh digunakan secara universal atau publik, Objek mana sajakah yang hanya boleh diakses didalam Class dan Objek manakah yang bersifat rahasia dan tidak boleh diganggu gugat nilainya.