Hai Sipinter. Sesuai dengan judulnya kita sudah pasti pada sesi "Tutorial Pemrograman PHP" dimana kita membahas segala hal tentang membuat website dengan PHP
Masih dalam materi tentang OOP dimana kali ini kita akan membahas inheritence dan access modifier pada OOP di PHP
Agar tidak bingung dalam pembahasan kali ini, kita perlu memahami pembahasan sebelumnya tentang OOP di PHP yaitu
- Pelajari Konsep OOP dalam Pemrograman PHP
- Pembuat dan Penghancur Dalam OOP di PHP
Berikut beberapa hal yang akan kita bahas pada postingan kali ini
Seperti yang Anda lihat kita akan membahas satu per satu tentang Inheritance dan hubungannya dengan Access Modifiers
Apa itu Warisan?
Inheritance adalah konsep mewariskan atau mewariskan properti (Metode dan Properti) dari satu kelas ke kelas lainnya
Ini berarti bahwa dengan Inheritance, sebuah kelas dapat menggunakan properti dan metode dari kelas turunannya
Warisan menciptakan hierarki hubungan kelas, di mana kelas utama yang propertinya diturunkan disebut kelas induk/kelas super/kelas dasar, kemudian kelas turunan yang menerima properti dari kelas utama disebut kelas anak/subkelas
Pengurangan 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 kelas turunan adalah dengan memperluasnya ke kelas induk
Contoh cara membuat kelas 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 ini
Apa itu Pengubah Akses?
Pengubah Akses atau Visibilitas adalah kata kunci yang digunakan oleh kelas, metode, dan properti untuk mengatur dan menentukan hak akses
Access modifier membuat kita tidak bisa seenaknya 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 bisa dilakukan sembarangan
Hal inilah yang membedakan method dengan fungsi atau variabel dari property yaitu adanya pengubah akses pada method dan property
Jika Anda mengatakan "tetapi mungkinkah metode dan properti tidak ada atau pengubah akses tidak diisi?"
Jenis Pengubah Akses
Berikut ini adalah beberapa jenis pengubah akses yang tersedia di PHP
- public = Mengatur hak akses method dan property agar dapat diakses dari mana saja, bahkan dari luar class (saat menjadi object)
- private = Mengatur method dan hak property agar hanya bisa diakses dari class tapi tidak bisa diakses dari class turunan dan dari object
- protected = Mengatur hak akses method dan property agar hanya bisa diakses di class dan turunannya tapi tidak dari object
- abstract = Hanya kelas dan metode yang dapat digunakan untuk membuat kelas dan metode abstrak
- final = Hanya kelas dan metode ini yang dapat digunakan, membuat kelas tidak dapat diturunkan dan metode tidak dapat ditimpa atau dideklarasikan ulang
Membatasi Properti dan Metode Turunan dengan Pengubah Akses
Seperti yang sudah dijelaskan di atas, ada tiga access modifier yang bisa digunakan untuk method dan property yaitu public, private dan protected
Gunakan public jika kita ingin metode dan properti dapat diakses dari kelas turunan dan dari objek
Gunakan private ketika kita hanya ingin metode dan properti hanya dapat diakses di kelas
Gunakan protected jika kita ingin metode dan properti dapat diakses melalui kelas turunan tetapi tidak dari objek
Berikut adalah contoh cara membatasi method dan properti yang bisa digunakan di kelas 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 seperti gambar di bawah ini
Cara Mengganti Metode pada Kelas Turunan
Kita dapat mengganti metode yang telah kita buat di kelas utama dengan mendeklarasikannya kembali di kelas turunan
Karena yang akan dipanggil terlebih dahulu adalah method yang ada di kelas turunan yang kita buat sebagai objek
Berikut adalah contoh cara mengganti metode yang sudah ada di kelas 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 dapat dilihat seperti pada gambar di bawah ini Fungsi buku yang dijalankan adalah fungsi yang ada di kelas buku, bukan yang ada di kelas perpustakaan
Cara Membuat Kelas atau Metode yang Tidak Dapat Diturunkan
Untuk mencegah kelas tertentu diturunkan, kita dapat menggunakan pengubah akses akhir dan jika ini digunakan pada suatu metode, itu akan membuat metode ini tidak dapat ditimpa oleh metode baru
Berikut ini adalah contoh membuat kelas tidak dapat didelegasikan dan membuat metode tidak dapat diganti
<?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 ini
Kemudian kita akan mencoba membuat sebuah method dengan final access modifier agar tidak dapat di override pada kelas turunannya, seperti dibawah ini
<?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 ini
Semoga postingan ini bermanfaat bagi kita semua, dan nantikan postingan-postingan menarik dari kami
“Nikmatilah sebuah proses mulai dari belajar, berkembang, hingga bisa berbagi untuk sesama. ”