1. Pengertian
Enkapsulasi adalah metode yang digunakan untuk membatasi akses pada suatu Property atau Method. Sehingga hanya property dan method tertentu saja yang bisa diakses dari luar class.
2. Keyword Enkapsulasi
Terdapat tiga keyword yang dapat digunakan dalam proses pembatasan, dan tiga keyword tersebut memiliki cakupan pembatasan yang berbeda.
Public
Jika property atau method diatur sebagai public
, maka keduanya bisa diakses oleh class manapun, termasuk juga class child. Untuk menggunakan enkapsulasi ini, kita bisa mengawali dengan keyword public
di setiap property atau method.
Contoh :
<?php
// Cetakan Donat
class Donat{
public function buatDonat(){
return "Donat rasa ".$this->variant." telah dibuat";
}
}
// Cetakan Donat Spesial
class DonatSpesial extends Donat{
public $variant = "Cokelat";
}
class DonatBiasa extends Donat{
public $variant;
}
// Bikin Donat
$donatSpesial = new DonatSpesial();
$donatBiasa = new DonatBiasa();
// Donat Aku
$donatAku = $donatSpesial->buatDonat();
// Donat Dia
$donatDia = $donatBiasa->variant = "Vanilla";
$donatDia = $donatBiasa->buatDonat();
echo "Hallo, ".$donatAku;
echo "Hai, ".$donatDia;
?>
Output :
Hallo, Donat rasa Cokelat telah dibuat
Hai, Donat rasa Vanilla telah dibuat
Penjelasan :
- Bisa dilihat, bahwa Method
buatDonat
bisa diakses oleh classDonatSpesial
danDonatBiasa
.
Protected
Jika property atau method di atur ke dalam Protected
maka keduanya tidak bisa diakses dari luar class, namun bisa diakses oleh class itu sendiri atau turunan class tersebut.
Contoh tidak bisa diakses di luar class :
<?php
class Donat{
protected $variant = "Cokelat";
public function buatDonat(){
return "Donat rasa ".$this->variant." telah dibuat";
}
}
// Bikin Donat
$donatSpesial = new Donat();
// Donat Aku
$donatAku = $donatSpesial->variant;
// Tampilkan variant donat yang dipilih
echo "Hallo, ".$donatAku;
?>
Output :
PHP Fatal error: Uncaught Error: Cannot access protected property Donat::$variant
Contoh bisa diakses di class turunan :
<?php
class Donat{
protected $variant = "Cokelat";
public function buatDonat(){
return "Donat rasa ".$this->variant." telah dibuat";
}
}
class DonatSpesial extends Donat{
public function lihatVariant(){
return $this->variant;
}
}
// Bikin Donat
$donatSpesial = new DonatSpesial();
// Donat Aku
$donatAku = $donatSpesial->lihatVariant();
// Tampilkan variant donat yang dipilih
echo "Hallo, Donat kamu memiliki Variant ".$donatAku;
?>
Output :
Hallo, Donat rasa Cokelat telah dibuat
Penjelasan :
- Property
variant
dapat diakses melalui pemanggilan methodlihatVariant()
dalam class turunanDonatSpesial
karena hanya method di dalam class turunan itu sendiri yang bisa mengakses property protected milikvariant
Private
Jika property atau method di atur ke dalam Private
maka keduanya tidak bisa diakses dari luar class, maupun class turunan. Dan hanya bisa diakses di dalam Class itu sendiri.
Contoh tidak bisa diakses class turunan :
<?php
class Donat{
private $variant = "Cokelat";
public function buatDonat(){
return "Donat rasa ".$this->variant." telah dibuat";
}
}
class DonatSpesial extends Donat{
public function lihatVariant(){
return $this->variant;
}
}
// Bikin Donat
$donatSpesial = new DonatSpesial();
// Donat Aku
$donatAku = $donatSpesial->lihatVariant();
// Tampilkan variant donat yang dipilih
echo "Variant : ".$donatAku;
?>
Contoh bisa diakses di dalam class :
<?php
class Donat{
private $variant = "Cokelat";
public function buatDonat(){
return $this->variant;
}
}
// Bikin Donat
$donatSpesial = new Donat();
// Donat Aku
$donatAku = $donatSpesial->buatDonat();
// Tampilkan variant donat yang dipilih
echo "Variant : ".$donatAku;
?>
3. Penutup
Demikian akhir dari artikel tentang "PHP OOP Part 4 - Enkapsulasi". Jika ada kesalahan dalam penggunakan kata maupun kalimat, saya mohon maaf. Semoga bermanfaat dan terima kasih. 😊🙏