Setelah kita belajar construct dan destruct pada sesi belajar PHP dasar bagian 11, dalam artikel ini kami akan menjelaskan secara detail tentang enkapsulasi PHP.
Apa itu Enkapsulasi PHP?
Enkapsulasi PHP adalah konsep dalam pemrograman berorientasi objek (OOP) yang bertujuan untuk melindungi data dan fungsi di dalam sebuah kelas, agar tidak dapat diakses secara langsung dari luar kelas tersebut.
Dengan enkapsulasi, Anda dapat mengontrol bagaimana data diakses dan dimodifikasi, agar manipulasi data dilakukan secara lebih aman. Konsep ini membantu menjaga integritas dan keamanan data dalam aplikasi.
Dalam PHP, terdapat tiga hak akses yang digunakan dalam proses enkapsulasi yaitu Public, Private, dan Protected.
Jenis Enkapsulasi PHP
Dalam PHP, enkapsulasi diterapkan dengan menggunakan pengaturan tingkat akses seperti Public, Private, dan Protected. Berikut penjelasan masing-masing jenisnya.
Public
Method atau property yang diberikan hak akses public dapat dipanggil di dalam maupun di luar dari class tersebut. Sehingga, selama method atau property tersebut telah dideklarasikan, maka dapat dipanggil dari mana saja.
Berikut contoh penggunaan enkapsulasi public:
<?php
class mobil{
public $jenis = "sedan";
public $merk = "BMW";
public $warna = "merah";
function dataMobil(){
echo "Jenis Mobil : " . $this->jenis . "<br>"; //dipanggil dari dalam class
}
}
class warnaMobil extends mobil { //class turunan dari mobil
function warnanya(){
echo "Warna Mobil : ".$this->warna."<br>";
}
}
$mobilsaya = new mobil();
$mobilsaya->dataMobil();
$warnamobilsaya = new warnaMobil();
$warnamobilsaya->warnanya();
echo "Merk Mobil : ".$mobilsaya->merk; //dipanggil dari luar class
?>
Dan ketika diakses muncul seperti ini:
Semua pemanggilan berhasil dilakukan karena enkapsulasi menggunakan public.
Protected
Method atau property yang diberikan hak akses protected hanya bisa dipanggil di dalam class tersebut saja, dan class-class yang berasal dari class tersebut. Jadi yang dapat memanggil adalah class itu sendiri, class parent (induk) atau class inherit (yang diwarisi, class di dalam class).
Sedangkan jika dipanggil dari luar class, maka class tersebut akan menemui error karena method atau property tersebut tidak dapat terbaca dari luar.
Berikut contoh penggunaan enkapsulasi protected:
<?php
class mobil{
protected $jenis = "sedan";
protected $merk = "BMW";
protected $warna = "merah";
function dataMobil(){
echo "Jenis Mobil : " . $this->jenis . "<br>"; //dipanggil dari dalam class
}
}
class warnaMobil extends mobil { //class turunan dari mobil
function warnanya(){
echo "Warna Mobil : ".$this->warna."<br>";
}
}
$mobilsaya = new mobil();
$mobilsaya->dataMobil();
$warnamobilsaya = new warnaMobil();
$warnamobilsaya->warnanya();
echo "Merk Mobil : ".$mobilsaya->merk; //dipanggil dari luar class
?>
Ketika diakses akan muncul tampilan seperti ini:
Pesan error muncul karena memanggil variabel yang terenkapsulasi protected dari luar class tersebut. Sedangkan kalau pemanggilan dilakukan di dalam class maupun turunan class (warnaMobil) dari class utamanya (mobil) dapat muncul.
Private
Method atau property yang diberikan hak akses private hanya dapat dipanggil khusus di dalam class tersebut saja. Tidak dapat dipanggil dari luar class, maupun class induk atau class turunanya.
Contoh penggunaan enkapsulasi private :
<?php
class mobil{
private $jenis = "sedan";
private $merk = "BMW";
private $warna = "merah";
function dataMobil(){
echo "Jenis Mobil : " . $this->jenis . "<br>"; //dipanggil dari dalam class
}
}
class warnaMobil extends mobil { //class turunan dari mobil
function warnanya(){
echo "Warna Mobil : ".$this->warna."<br>";
}
}
$mobilsaya = new mobil();
$mobilsaya->dataMobil();
$warnamobilsaya = new warnaMobil();
$warnamobilsaya->warnanya();
echo "Merk Mobil : ".$mobilsaya->merk; //dipanggil dari luar class
?>
Dan ketika diakses akan muncul tampilan seperti ini :
Data hanya muncul jika pemanggilan dilakukan di dalam class tersebut saja, tidak di class turunanya atau di luar class. Jika dipanggil di class turunanya atau dari luar class akan muncul pesan error tersebut.
Selanjutnya dalam belajar PHP dasar bagian 12, kami akan menjelaskan tentang proses enkapsulasi pada function atau method dalam PHP.
Enkapsulasi pada Function/Method
Enkapsulasi dapat dilakukan untuk function/method juga, dideklarasikan sebelum kata function dibuat dengan fungsi enkapsulasi yang sama. Contoh penggunaanya seperti ini:
public function namafunction(){
//isi function
}
Dan penerapanya dalam script kira kira seperti ini :
<?php
class mobil{
private $jenis = "sedan";
private $merk = "BMW";
private $warna = "merah";
public function jenisnya(){
echo "Jenis Mobil : " . $this->jenis . "<br>";
}
protected function warnanya(){
echo "Warna Mobil : ".$this->warna."<br>";
}
private function merknya(){
echo "Merk Mobil : ".$this->merk;
}
function pemanggilan_merk(){
return $this->merknya();
}
}
class mobilnya extends mobil {
function pemanggilan(){
echo $this->jenisnya();
echo $this->warnanya();
}
}
echo "Pemanggilan public function <br>";
$mobilsaya = new mobil();
$mobilsaya->jenisnya();
echo "<hr>";
echo "Pemanggilan protected function (dipanggil dari class turunanya dahulu)<br>";
$mobildia = new mobilnya();
$mobildia->pemanggilan();
echo "<hr>";
echo "Pemanggilan private function (dipanggil dari function yang bisa diakses diluar class dahulu, lalu function tersebut yang kita panggil)<br>";
$mobilsaya->pemanggilan_merk();
echo "<hr>";
?>
Dan ketika diakses muncul tampilan seperti ini:
Kesimpulan
Enkapsulasi dalam PHP terdiri dari tiga jenis hak akses yaitu public, protected, dan private, yang masing-masing memiliki fungsinya sendiri.
Secara umum, enkapsulasi digunakan untuk melindungi dan menyembunyikan data selama proses pengolahan atau penampilannya. Dengan membagi data berdasarkan hak akses, enkapsulasi membantu menjaga keamanan data agar tidak mudah diakses sembarangan dan memastikan proses pengolahan data lebih terorganisir serta terfokus.
Demikian series belajar php dasar untuk pemula bagian 12 mengenai apa itu enkapsulasi PHP. Nantikan seri belajar php dasar selanjutnya dari Rumahweb Indonesia. Semoga bermanfaat.