Sunday, December 7, 2014

Tutorial PHP OOP Part 22 : Menggunakan Type Hinting

Type hinting adalah sebuah cara untuk membatasi penggunaan parameter dalam sebuah method didalam class. Dengan type hinting kita dapat menentukan secara spesifik tipe data yang diterima oleh sebuah method. Type hinting hanya digunakan untuk mambatasi parameter berupa object, array dan interface. Type hinting tidak bisa dipakai untuk membatasi parameter dengan tipe integer, string, resource dan trait.

Penggunaan Type Hint

Untuk memahami penggunaan type hinting, silahkan perhatikan contoh berikut ini :
 <?php  
   
 class Rumput {  
  public $kalori = 100;   
 }  
  
 $tokoEnergi1 = array (50,100,150,200);  
   
 $tokoEnergi2 = array (500,1000,1500,2000);  
   
 interface bonusEnergi {  
      const bonus=10000;  
 }  
   
 class Hewan  
 {  
      public $energi;  
        
      public function makanRumput( Rumput $Rumput )  
      {  
        $this->energi += $Rumput->kalori;  
        echo "Tambah Energi Makan Rumput Sebesar = ".$Rumput->kalori."<br/>";  
      }  
    
      public function beliEnergi( array $arrayName ,$level)  
      {  
           $this->energi += $arrayName[$level];  
           echo "Tambah beli Energi Sebesar = ".$arrayName[$level]."<br/>";  
      }  
        
      public function bonusEnergi( $interface )  
      {  
           $this->energi += $interface::bonus;  
           echo "Tambah Bonus Energi Sebesar = ".$interface::bonus."<br/>";  
      }  
   
      public function getEnergi()  
      {  
        return 'Total energi Sekarang: ' . $this->energi . '<br>';  
      }  
 }  
   
 $sapi = new Hewan;  
 $Rumput = new Rumput();  
 $sapi->energi=0;  
   
 echo "Energi awal Sapi=".$sapi->energi."<br/><br/>";  
   
 $sapi->makanRumput( $Rumput );  
 echo $sapi->getEnergi()."<br/>";  
   
 $sapi->beliEnergi($tokoEnergi1,3);  
 echo $sapi->getEnergi()."<br/>";  
   
 $sapi->beliEnergi($tokoEnergi2,2);  
 echo $sapi->getEnergi()."<br/>";  
   
 $sapi->bonusEnergi('bonusEnergi');  
 echo $sapi->getEnergi()."<br/>";  
   
 ?>  

Penjelasan Program

Pada contoh terdapat beberapa penggunaan type hint, yaitu :
  1. Type hint dengan tipe Object pada method makanRumput() menggunakan object Rumput
  2. Type hint  dengan tipe Array pada method beliEnergi() yang mengambil nilai dari array yang didefinisikan oleh variabel $arrayName.
  3. Type hint dengan tipe Interface pada method bonusEnergi() yang mengambil konstanta bonus dari interface bonusEnergi.

Alur program :

Misalnya kita akan membuat sebuah object Hewan pada karakter game dan memantau perkembangan energi melalui berbagai proses seperti makan rumput, beli energi dan bonus energi.
Persiapan untuk memperoleh energi :
  • Pertama kita membuat class Rumput dengan properti kalori diset sebesar 100.
  • Selanjutanya kita buat array tokoEnergi1 dengan isi 50,100,150,200 dan array tokoEnergi1 dengan isi 500,1000,1500,2000.
  • Yang ketiga kita buat Interface bonusEnergi dengan konstanta bonus sebesar 10000.
Pembuatan class Hewan dengan isi proses pertambahan energi :
  • Pertama kita membuat properti $energi.
  • Kemudian kita buat method makanRumput() untuk mengambil energi dari object Rumput yang diinstansisasi dari class Rumput lalu menambahkannya kedalam energi sekarang.
  • Kita buat juga method beliEnergi() untuk membeli energi dari array tokoEnergi yang berisi stok energi lalu menambahkannya kedalam energi sekarang.
  • Selanjutnya kita buat juga method bonusEnergi() untuk mengambil bonus energi dari interface yang berisi konstanta bonus energi lalu menambahkannya kedalam energi sekarang.
  • Yang terakhir kita buat method untuk menampilaknjumlah energi sekarang dengan method getEnergi().
Membuat visualisasi dari class Hewan :
  • Pertama kita buat object bernama sapi dari class Hewan.
  • Kita juga harus menginstantisasi object Rumput dari class Rumput agar bisa "dimakan" nantinya.
  • Setting nilai energi awal=0 dan tampilkan.
  • Kemudian melalui perintah { $sapi->makanRumput( $Rumput );  } kita menyuruh sapi untuk makan rumput lalu menampilkan energi sekarang dengan perintah { echo $sapi->getEnergi()."<br/>";   }
  • Setelah itu kita perintah sapi untuk beli energi selama dua kali yaitu sebesar 200 di tokoEnergi1 dan 1500 di tokoEnergi2
  • Lalu kita tampilkan lagi energi sekarang dengan perintah { echo $sapi->getEnergi()."<br/>";   }
  • Yang terakhir kita suruh sapi untuk mengambil bonus energi dari interface bonusEnergi melalui perintah { $sapi->bonusEnergi('bonusEnergi');  }
  • Dan kita tampilkan lagi energi sekarang dengan perintah { echo $sapi->getEnergi()."<br/>";   }
Berikut ini tampilan program saat dijalankan :
Energi awal Sapi=0

Tambah Energi Makan Rumput Sebesar = 100
Total energi Sekarang: 100

Tambah beli Energi Sebesar = 200
Total energi Sekarang: 300

Tambah beli Energi Sebesar = 1500
Total energi Sekarang: 1800

Tambah Bonus Energi Sebesar = 10000
Total energi Sekarang: 11800

Kesimpulan :

Dengan menggunakan type hinting, kita bisa membatasi nilai-nilai yang bisa masuk ke method yang kita buat. Kita juga memberikan akses sementara untuk penggunaan kelas di dalam kelas-kelas yang lain.

Referensi :

0 komentar

Post a Comment