PHP Traits
PHP केवल सिंगल inheritance को सपोर्ट करता है, जैसा कि हम जानते हैं, सिंगल inheritance में class केवल एक सिंगल क्लास से ही inherit कर सकता है जिसे हमने PHP Inheritance चैप्टर में देखा था।
कोड का reuse ही object-oriented programming के सबसे महत्वपूर्ण पहलुओं में से एक है। इसीलिए सिंगल inheritance की समस्याओं को दूर करने के लिए PHP में traits का इस्तेमाल किया जाता है।
<?phptrait TraitName { // some code...}?>
किसी class में एक trait का उपयोग करने के लिए, use
कीवर्ड का उपयोग करना होता है।
<?phptrait greeting{ public function hello(){ echo "Hello everyone "; }}
class ClassA{ use greeting;}
$obj = new ClassA();$obj->hello();?>
ऊपर दिए गए उदाहरण को समझते है
1st : उपरोक्त उदाहरण में, हमने एक trait बनाया greeting
नाम
का।
2nd : फिर, हम एक क्लास बनाते हैं ClassA
नाम का। यहाँ पर
Class, traits का उपयोग करता है और अब traits की सभी मेथड ClassA
में उपलब्ध होंगी।
3rd : यदि अन्य class को भी hello()
फ़ंक्शन का उपयोग करने की
आवश्यकता है, तो बस उन क्लास में greeting
traits का उपयोग करना होगा।
4th : इससे कोड duplication कम हो जाता है, क्योंकि एक ही मेथड को बार-बार पुनः घोषित करने की आवश्यकता नहीं होती है
PHP - Using Multiple Traits
<?phptrait greeting{ public function hello(){ echo "Hello everyone <br>"; }}
trait goodbye{ public function bye(){ echo "Bye Bye everyone <br>"; }}
class ClassA{ use greeting;}
class ClassB{ use greeting, goodbye;}
$test = new ClassA();$test->hello();echo "<br>"; $test2 = new ClassB();$test2->hello();$test2->bye();?>
Hello everyone
Hello everyoneBye Bye everyone
ऊपर दिए गए उदाहरण को समझते हैं:
यहां, हमने दो traits घोषित किया हैं: greeting
और goodbye
फिर, हमने दो क्लास बनाया: ClassA
और ClassB
. प्रथम क्लास (ClassA) greeting
traits का उपयोग करता है, और दूसरा क्लास (ClassB) greeting
और goodbye
दोनों traits का उपयोग करता है (multiple traits अल्पविराम यानि comma द्वारा अलग किए जाते हैं)।