ใน PHP เวอร์ชัน 5.4 ได้นำเสนอ Trait เข้ามาในการเขียนโปรแกรมเชิงวัตถุ (OOP) Trait คล้ายกับคลาส (Class) แต่ใช้เพื่อจัดกลุ่มเมธอด (Methods) แบบละเอียดและน่าเชื่อถือเท่านั้น ไม่สามารถสร้างอินสแตนซ์ของ Trait ได้โดยตรง Traits ถูกนำเข้ามาใน PHP 5.4 เพื่อแก้ปัญหาของการสืบทอดเดี่ยว (Single Inheritance) เนื่องจากในการสืบทอดเดี่ยว คลาสสามารถสืบทอดจากคลาสอื่นได้เพียงคลาสเดียวเท่านั้น ในกรณีของ Trait ช่วยให้นักพัฒนาสามารถนำชุดเมธอดไปใช้ซ้ำในหลายคลาสอิสระที่อยู่ในลำดับชั้นคลาสที่ต่างกันได้
ตัวอย่าง
<?php
trait Reader{
public function add($var1,$var2){
return $var1+$var2;
}
}
trait Writer {
public function multiplication($var1,$var2){
return $var1*$var2;
}
}
class File {
use Reader;
use Writer;
public function calculate($var1,$var2){
echo "Result of addition:".$this->add($var1,$var2) ."\n";
echo "Result of multiplication:".$this->multiplication($var1,$var2);
}
}
$o = new File();
$o->calculate(5,3);
?>
ผลลัพธ์
Result of addition two numbers:8 Result of multiplication of two numbers:15
คำอธิบาย
ในตัวอย่างข้างต้น เราได้นำเมธอดจากสอง Trait มาใช้ในคลาสเดียว เนื่องจาก Trait เราจึงสามารถเข้าถึงหลายเมธอดในคลาสเดียวได้
หมายเหตุ
ใช้คีย์เวิร์ด "USE" เพื่อเข้าถึง Trait ภายในคลาส