Type hinting digunakan untuk memastikan argumen yang diinput di dalam suatu method tipenya sesuai dengan yang diinginkan, kalau tidak akan muncul error.
Array Type Hinting
Cukup menambahkan keyword array di depan argumen milik suatu method.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
<?php function hitungJarak(array $mobils){ foreach($mobils as $mobil){ $jarakMaks = $mobil[1] * $mobil[2]; echo $mobil[0]. " : ". $jarakMaks . " km <br>"; } } $kendaraan = [ ['Toyota',10,25], ['Suzuki',15,21] ]; hitungJarak($kendaraan); |
Kalau inputnya bukan array, akan muncul error :
Object Type Hinting
Caranya dengan memberikan nama class sebagai type hinting pada method.
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 |
<?php class Mobil{ private $merk; private $efisiensi; private $volBbm; public function __construct($merk,$efisiensi,$volBbm){ $this->merk = $merk; $this->efisiensi = $efisiensi; $this->volBbm = $volBbm; } public function getMerk(){ return $this->merk; } public function getEfisiensi(){ return $this->efisiensi; } public function getVolBbm(){ return $this->volBbm; } } class Calculator{ public function hitungJarak(Mobil $mobil){ $efisiensi = $mobil->getEfisiensi(); $volBbm = $mobil->getVolBbm(); $jarakMaks = $efisiensi * $volBbm; echo $mobil->getMerk() . " : ". $jarakMaks . " km <br>"; } } $toyota = new Mobil('Toyota',10,20); $cal1 = new Calculator(); $cal1->hitungJarak($toyota); $suzuki = new Mobil('Suzuki',15,20); $cal2 = new Calculator(); $cal2->hitungJarak($suzuki); |
Pada class Calculator{} terdapat method hitungJarak yang harus berupa Object Mobil. Jika method hitungJarak() tidak menerima object yang merupakan instance dari Class Mobil{} maka akan muncul error.
Type Hinting Tipe Data Dasar
Pada PHP 7 terdapat fasilitas Type Hinting untuk tipe data dasar. Fasilitas ini tidak terdapat pada PHP untuk versi sebelumnya. Versi sebelumnya harus menggunakan fungsi is_ seperti is_bool, is_string, is_float, is_null, is_int.
Pada PHP 7 tidak perlu pengecekan secara manual. Bisa menggunakan type hinting.
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 |
<?php class Mobil{ private $merk; private $harga; private $lunas; private $jumlahPintu; public function setMerk(string $merk){ $this->merk = $merk; } public function setHarga(float $harga){ $this->harga = $harga; } public function setLunas(bool $lunas){ $this->lunas = $lunas; } public function setPintu(int $pintu){ $this->jumlahPintu = $pintu; } } $toyota = new Mobil(); $toyota->setMerk('Toyota'); $toyota->setHarga(125000000); $toyota->setPintu(2); $toyota->setLunas(true); var_dump($toyota); |
Type hinting digunakan sebagai benteng pertama supaya input yang diterima sesuai dengan yang diharapkan.