PHP 5.4 संस्करण में PHP ऑब्जेक्ट-ओरिएंटेड प्रोग्रामिंग में ट्रेट पेश किया गया। एक ट्रेट क्लास की तरह होता है लेकिन यह केवल एक महीन और विश्वसनीय तरीके से मेथड्स को ग्रुप करने के लिए होता है। अपने आप ट्रेट को इंस्टेंटिएट करने की अनुमति नहीं है। ट्रेट्स को PHP 5.4 में सिंगल इनहेरिटेंस की समस्याओं को दूर करने के लिए पेश किया गया था। जैसा कि हम जानते हैं, सिंगल इनहेरिटेंस में क्लास केवल एक अन्य सिंगल क्लास से इनहेरिट कर सकती है। ट्रेट के मामले में, यह एक डेवलपर को विभिन्न क्लास हायरार्की में रहने वाली कई स्वतंत्र क्लासेज में मेथड्स के सेट को स्वतंत्र रूप से पुनः उपयोग करने में सक्षम बनाता है।
उदाहरण
<?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
व्याख्या
उपरोक्त उदाहरण में, हमने एक सिंगल क्लास में दो ट्रेट्स से एक फंक्शन को इम्प्लीमेंट किया है। ट्रेट के कारण, हम एक सिंगल क्लास में कई फंक्शन्स तक पहुंचने में सक्षम हैं।
नोट
हम क्लास के अंदर ट्रेट्स को एक्सेस करने के लिए "USE" कीवर्ड का उपयोग कर रहे हैं।