पीएचपी मैनुअल राज्यों इस प्रकार:
लक्षण जैसे PHP के रूप में एक विरासत भाषाओं में कोड पुन: उपयोग के लिए एक तंत्र है। एक विशेषता का उद्देश्य एकल वर्ग की कुछ सीमाओं को कम करने के लिए एक डेवलपर को विभिन्न वर्ग पदानुक्रमों में रहने वाले कई स्वतंत्र वर्गों में स्वतंत्र रूप से तरीकों के सेट का पुन: उपयोग करने में सक्षम बनाता है। लक्षणों और वर्गों के संयोजन के अर्थशास्त्र को इस तरह से परिभाषित किया जाता है जो जटिलता को कम करता है, और एकाधिक विरासत और मिक्सिन से जुड़ी सामान्य समस्याओं से बचाता है।
यदि आप एक विशेषता का विस्तार करना चाहते हैं, तो यह शायद एक वर्ग होना चाहिए। यदि आपके पास एक वर्ग में विधियों का एक सेट है जिसे आप दूसरों में उपयोग करना चाहते हैं, लेकिन कक्षा (उदाहरण के लिए class Animal extends Vehicle
) का विस्तार करना अनुचित लगता है, तो PHP 5.4 में यह एक विशेषता के रूप में अच्छी तरह से काम कर सकता है।
अधिक प्रश्न का उत्तर देने के लिए, आप एक विशेषता का विस्तार नहीं करते हैं, लेकिन आप उन लक्षणों को बना सकते हैं जो स्वयं अन्य लक्षणों का उपयोग करते हैं। प्रति पीएचपी पुस्तिका के रूप में:
trait Hello {
public function sayHello() {
echo 'Hello ';
}
}
trait World {
public function sayWorld() {
echo 'World!';
}
}
trait HelloWorld {
use Hello, World;
}
class MyHelloWorld {
use HelloWorld;
}
आप विचार कर सकते हैं इस तार्किक समूहों में अपने लक्षण बनाए रखने के लिए, और कुछ प्रतिरूपकता लागू करने के लिए एक तरह से किया जाना है।
संपादित करें: कुछ टिप्पणियों को देखते हुए, मुझे लगता है कि बेस क्लास में एक विशेषता का उपयोग करने का अर्थ यह भी है कि विशेषता किसी भी वर्ग में है जो इसे बढ़ाती है, और विशेषता के कार्यों को बेस क्लास पर प्राथमिकता दी जाती है। । इसे बाल वर्ग में रखकर केवल माता-पिता/बेस क्लास के लिए योग्यता के कार्य अनुपलब्ध होंगे।
Parent > Trait > Child
http://php.net/manual/en/language.oop5.traits.php
कैसे 'कक्षा सी का प्रयोग करेंगे टी {}' से अलग हो क्या हम पहले से ही है (थोड़ा अलग वाक्यविन्यास के अलावा)? – Jon
छोटे वाक्यविन्यास जब मैं बेस क्लास से कुछ वर्ग का विस्तार करना चाहता हूं लेकिन विशेषता का उपयोग कर रहा हूं। – Meglio
@ मेग्लियो: बस इसे करें: 'कक्षा सी आधार {उपयोग टी} 'बढ़ाता है। – hakre