Apa itu Traits?
PHP hanya mendukung pewarisan tunggal yaitu class turunan hanya dapat mewarisi dari satu induk tunggal.
Jadi, bagaimana jika suatu class perlu mewarisi beberapa perilaku? Trait OOP memecahkan masalah ini.
Trait digunakan untuk mendeklarasikan fungsi yang dapat digunakan di banyak class. Trait dapat memiliki fungsi dan fungsi abstract yang dapat digunakan di beberapa class, dan fungsi tersebut dapat memiliki pengubah akses apa pun (public, protected atau private).
Trait dideklarasikan dengan kata kunci trait:
Sintaks
<?php
trait NamaTrait{
// kode...
}
?>
Untuk menggunakan Trait dalam class, gunakan kata kunci use:
Sintaks
<?php
class ClassKu {
use NamaTrait;
}
?>
Mari kita lihat sebuah contoh:
Contoh
<!DOCTYPE html>
<html>
<body>
<?php
trait pesan1 {
public function psn1() {
echo "OOP menyenangkan!";
}
}
class SelamatDatang {
use pesan1;
}
$obj = new SelamatDatang ();
$obj->psn1();
?>
</body>
</html>
Penjelasan Contoh
Di sini, kita deklarasikan satu Trait : pesan1. Kemudian, dibuatkan satu class: SelamatDatang. Class menggunakan properti dan semua fungsi yang tersedia di class itu sendiri.
Jika class lain perlu menggunakan fungsi psn1(), cukup gunakan Trait pesan1 di class tersebut. Cara mengurangi duplikasi kode, karena tidak perlu mendeklarasikan ulang fungsi yang sama dalam Trait berulang kali.
Menggunakan Banyak Traits
Mari kita lihat contoh lain:
Contoh
<!DOCTYPE html>
<html>
<body>
<?php
trait pesan1{
public function psn1() {
echo "OOP menyenangkan! ";
}
}
trait pesan2 {
public function psn2() {
echo "OOP mengurangi duplikasi kode!";
}
}
class SelamatDatang {
use pesan1;
}
class SelamatDatang2 {
use pesan1, pesan2;
}
$obj = new SelamatDatang ();
$obj->psn1();
echo "<br>";
$obj2 = new SelamatDatang2 ();
$obj2->psn1();
$obj2->psn2();
?>
</body>
</html>
Penjelasan Contoh
Di sini, diperlihatkan cara mendeklarasikan dua Trait : pesan1 dan pesan2. Kemudian, diperlihatkan proses membuat dua class: SelamatDatang dan SelamatDatang2. Class pertama (SelamatDatang) menggunakan Trait pesan1, dan class kedua (SelamatDatang2) menggunakan Trait pesan1 dan pesan2 (beberapa Trait dipisahkan dengan koma).
Tutorial sebelumnya : PHP Interface
Tutorial setelahnya : PHP Static Function
Semua Tutorial PHP : Tutorial PHP