Prinsip polymorphism adalah “method yang berada di class yang berbeda yang melakukan hal yang sama, harus mempunya nama yang sama”. Misalnya method hitungLuas() pada Tutorial Bagian 7.
Untuk mengimplementasikan polymorphism, digunakan abtract class dan interface. Contoh disini kita gunakan interface :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 |
<?php interface BangunDatar{ public function hitungluas(); } class Persegi implements BangunDatar{ private $sisi = 4; public function __construct($sisi){ $this->sisi = $sisi; } public function hitungLuas(){ return pow($this->sisi,2); } } class Segitiga implements BangunDatar{ private $alas; private $tinggi; public function __construct($alas,$tinggi){ $this->alas = $alas; $this->tinggi = $tinggi; } public function hitungLuas(){ return (0.5 * $this->alas * $this->tinggi); } } class Lingkaran implements BangunDatar{ private $jarijari = 7; public function __construct($jarijari){ $this->jarijari = $jarijari; } public function hitungLuas(){ return (3.14 * pow($this->jarijari,2)); } } $persegi = new Persegi(4); echo 'Luas Persegi = '. $persegi->hitungLuas() . "<br>"; $segitiga = new Segitiga(4,5); echo 'Luas Segitiga = '.$segitiga->hitungLuas() . "<br>"; $lingkaran = new Lingkaran(7); echo 'Luas Lingkaran = '.$lingkaran->hitungLuas() . "<br>"; ?> |
Contoh lainnya adalah pembuatan error log. Apakah berupa file teks, atau ke database :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
<?php interface Logger{ public function log(); } class DatabaseLogger implements Logger{ public function log(){ //Menyimpan log ke database } } class FileLogger implements Logger{ public function log(){ //Menyimpan log ke file teks } } |