Type hinting berguna untuk meningkatkan kualitas data yang diproses. Untuk dapat mengerti proses Interface Type Hinting, contohnya seperti ini : Batmobile adalah mobilnya Batman. Selain Batman, Batmobile juga bisa dikendarai otomatis dengan robot Android. Kita akan membuat type hinting berupa Object Sopir. Sopir bisa berupa Manusia, si Batman sendiri, atau Robot, si Android.
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 |
<?php class Mobil{ private $merk; public function __construct(string $merk){ $this->merk = $merk; } public function jalan(Sopir $sopir){ echo $this->merk . " siap <br>"; echo $sopir->identitas() . " siap <br>"; echo "Berangkat..."; } } abstract class Sopir{ abstract protected function identitas(); } class Manusia extends Sopir{ private $nama; public function __construct(string $nama){ $this->nama = $nama; } public function identitas(){ return $this->nama; } } class Robot extends Sopir{ private $nama; private $versi; public function __construct(string $nama, string $versi){ $this->nama = $nama; $this->versi = $versi; } public function identitas(){ return "$this->nama $this->versi"; } } $batman = new Manusia('Batman Manusia Kelelawar'); die('jih'); $batmobile = new Mobil('Batmobile'); $batmobile->jalan($batman); |
Kode di atas menggunakan Abstract Class, yang ini menggunakan 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 |
<?php class Mobil{ private $merk; public function __construct(string $merk){ $this->merk = $merk; } public function jalan(Sopir $sopir){ echo $this->merk . " siap <br>"; echo $sopir->identitas() . " siap <br>"; echo "Berangkat..."; } } interface Sopir{ public function identitas(); } class Manusia implements Sopir{ private $nama; public function __construct(string $nama){ $this->nama = $nama; } public function identitas(){ return $this->nama; } } class Robot implements Sopir{ private $nama; private $versi; public function __construct(string $nama, string $versi){ $this->nama = $nama; $this->versi = $versi; } public function identitas(){ return "$this->nama $this->versi"; } } $batman = new Robot('Android','V2'); $batmobile = new Mobil('Batmobile'); $batmobile->jalan($batman); |