Hai Sipinter! Sesuai judul sudah pasti kita lagi di sesi “Tutorial Pemrograman PHP” dimana kita membahas semua hal tentang membuat web dengan PHP.
Masih di materi mengenai OOP dimana kali ini kita akan membahas tentang inheritance (Penurunan atau Pewarisan) dan access modifiers dalam OOP di PHP.
Agar tidak kebingungan dalam pembahasan kali ini kita perlu memahami pembahasan sebelumnya mengenai OOP di PHP, yaitu:
Berikut beberapa hal yang akan kita bahas pada postingan kali ini:
- Apa itu Inheritence?
- Apa itu Access Modifiers?
- Cara Menimpa Method Pada Class Turunan
- Cara Membuat Class atau Method Tidak Dapat Diturunkan
Seperti yang kalian lihat kita akan membahas satu-persatu tentang Inheritance dan hubungannya dengan Access Modifiers.
Apa itu Inheritence?
Inheritence merupakan sebuah konsep penurunan atau pewarisan sifat (Method dan Property) dari sebuah class ke class lain.
Artinya dengan Inheritence sebuah class dapat menggunakan property dan method yang ada pada class yang diturunkan.
Inheritence menimbulkan hearki hubungan sebuah class, dimana class utama yang diturunkan sifatnya disebut sebagai class induk/ parent class/ super class/ base class, lalu class turunan yang menerima sifat dari class utama disebut class anak/ sub class.
Penurunan class akan membuat kita dapat menggunakan kembali kode yang telah kita buat (reuse code), sehingga penulisan program lebih efektif, efisien, terstruktur dan tidak menimbulkan duplikasi kode.
Cara membuat class turunan adalah dengan meng extends nya ke class induk.
Contoh cara membuat class turunan di PHP:
<?php
class Buku
{
public $buku=['matematika','bahasa','ips'];
public function tampilkanBuku(){
echo "<h1>Daftar Buku</h1>";
foreach ($this->buku as $no => $data) {
$n=$no+1;
echo "$n. $data<br/>";
}
}
}
class PeminjamanBuku extends Buku
{
public function cariBuku($nama_buku){
echo "<hr/>";
//cara memanggul properti dari class induk
if(in_array($nama_buku, $this->buku)){
echo "buku $nama_buku ditemukan<br/>";
}else{
echo "Buku $nama_buku tidak ditemukan<br/>";
}
echo "<hr/>";
}
}
$peminjam=New PeminjamanBuku();
$peminjam->cariBuku('bahasa');
//coba memanggil method pada class buku melalui objek yang dibuat dari class turunan
$peminjam->tampilkanBuku();
?>
Hasilnya seperti gambar di bawah:
Apa itu Access Modifiers?
Access Modifier atau Visisbility adalah sebuah keyword yang digunakan oleh class, method dan property untuk mengatur dan menentukan hak aksesnya.
Access modifier membuat kita tidak bisa sembarangan menggunakan class, method dan property yang sudah ada sehingga keamanan akan lebih terjaga.
Karena pada umumnya ada beberapa data yang bersifat rahasia dan perintah yang tidak boleh dijalankan sembarangan.
Inilah yang membedakan method dengan fungsi atau variabel dengan property yaitu adanya access modifier pada method dan property.
Jika kalian bilang “tapi kan bisa method dan property enggak ada atau tidak diisi access modifiernya?” jawabanya adalah jika tidak ditentukan access modifiernya maka method dan properti itu otomatis menjadi public.
Jenis-jenis Access Modifiers
berikut merupakan beberapa jenis access modifier yang ada di PHP:
- public = Mengatur hak akses method dan properti agar dapat diakses dari manapun bahkan dari luar class (pada saat menjadi objek).
- private = Mengatur hak ases method dan property agar hanya dapat diakses dari class tersebut namun tidak dapat diakses dari class turunannya dan dari objeknya.
- protected = Mengatur hak akses method dan property agar hanya dapat diakses di class tersebut dan turunannya tapi tidak bisa dari objek.
- abstract = Hanya dapat digunakan class dan method untuk membuat class dan method abstrak.
- final = Hanya dapat digunakan class dan method ini membuat sebuah class tidak dapat diturunkan dan method tidak dapat di timpa atau dideklarasikan ulang.
Membatasi Property dan Method Yang Diturunkan dengan Access Modifiers
Seperti yang sudah dijelaskan diatas ada tiga access modifier yang dapat digunakan untuk method dan property yaitu public, private dan protected.
Gunakan public jika kita ingin method dan property dapat diakses dari class turunan dan dari objek.
Dunakan private ketika kita hanya ingin sebuah method dan property hanya dapat diakses di class tersebut.
Gunakan protected jika kita ingin method dan property bisa diakses melalui class turunan tapi tidak bisa dari objek.
Berikut adalah contoh cara membatasi method dan property yang dapat digunakan pada class turunan:
<?php
Class induk
{
public $dataPublic="Ini data Public";
private $dataPrivate="Ini data Private";
protected $dataProtected="Ini data Protectted";
public function PublicFunction(){
echo "Ini Fungsi Public";
}
private function PrivateFunction(){
echo "Ini Fungsi Private";
}
protected function ProtectedFunction(){
echo "Ini Fungsi Protected";
}
}
class anak extends induk
{
//property yang dapat diakses dari class turunan
public function PropertyYgBisa(){
echo "dataPublic = ".$this->dataPublic."<br/>";
echo "dataProtected = ".$this->dataProtected."<br/>";
}
public function RemakeProtectedFunction(){
//cara menggunakan method pada class induk
$this->ProtectedFunction();
}
}
$data=New anak();
//menampilkan properti yang dapat diakses dari objek class turunan
echo "<hr/>dataPublic = ".$data->dataPublic." <br><hr/>";
//menampilkan properti yang dapat diakses dari class turunan
$data->PropertyYgBisa();
echo "<hr>";
//menggunakan method yang dapat digunakan dari objek class turunan
$data->PublicFunction();
echo "<br/>";
$data->RemakeProtectedFunction();
?>
Hasilnya adalah seperti gambar di bawah:
Cara Menimpa Method Pada Class Turunan
Kita dapat menimpa method yang sudah kita buat di class utama dengan mendeklarasikannya kembali di class turunan.
Karena yang akan dipanggil pertama kali adalah method yang berada di class turunan yang kita buat sebagai object.
berikut merupakan contoh cara menimpa method yang sudah ada di class induk:
<?php
class Perpustakaan
{
public $databuku=['Matematika','Fisika','Sejarah','Bahasa'];
public function tampilBuku()
{
foreach ($this->databuku as $key => $value) {
echo "$key. buku $value, ";
}
}
}
class Buku extends Perpustakaan
{
Public function tampilBuku()
{
echo "<h1>Daftar Buku di Perpustakaan</h1>";
foreach ($this->databuku as $key => $value) {
$n=$key+1;
echo "$n. buku $value <br/>";
}
}
}
$buku=New Buku();
$buku->tampilBuku();
?>
Hasilnya bisa dilihat seperti gambar di bawah fungsi tampilBuku yang dijalankan adalah fungsi yang ada di class buku bukan yang berada di class perpustakaan :
Cara Membuat Class atau Method Tidak Dapat Diturunkan
Untuk mencegah sebuah class tertentu untuk diturunkan maka kita bisa mengunakan access modifier final dan jika ini digunakan pada method akan membuat method ini tidak bisa ditimpa dengan method baru.
berikut merupakan contoh membuat class tidak dapat diturunkan dan membuat method tidak dapat di timpa:
<?php
final class perpustakaan
{
public function tampilPegawai()
{
echo "Pegawai berjumlah 5 orang yaitu nana, Leo, Tati, Nay, Tono";
}
}
//penurunanan final class akan menimbulkan error
class buku extends perpustakaan
{
}
?>
Hasilnya akan error seperti gambar di bawah:
Lalu kita akan mencoba membuat method dengan access modifier final agar tidak dapat ditimpa pada class turunan, seperti di bawah:
<?php
class Perpustakaan
{
public $databuku=['Matematika','Fisika','Sejarah','Bahasa'];
final function tampilBuku()
{
foreach ($this->databuku as $key => $value) {
echo "$key. buku $value, ";
}
}
}
class Buku extends Perpustakaan
{
//akan menimbulkan error karena fungsi bersifat final
Public function tampilBuku()
{
echo "<h1>Daftar Buku di Perpustakaan</h1>";
foreach ($this->databuku as $key => $value) {
$n=$key+1;
echo "$n. buku $value <br/>";
}
}
}
$buku=New Buku();
$buku->tampilBuku();
?>
Hasilnya akan error seperti gambar di bawah:
Sekian postingan kali ini semoga bermanfaat untuk kita semua, dan nantikan postingan menarik dari kami!
“Nikmati sebuah proses mulai dari belajar, mengembangkan, sampai kita bisa berbagi untuk orang lain.”
Bantu kami dengan share postingan ini dan ikuti social media Sipintek.