PHP में OOP एक्सेस मॉडिफायर्स और ट्रेट्स

आपका ध्यान इस तथ्य की ओर जाना चाहिए कि ट्रेट्स का उपयोग करना इनहेरिटेंस (विरासत) नहीं है। इनहेरिटेंस में प्राइवेट मेथड्स और प्रॉपर्टीज इनहेरिट नहीं होती हैं।

ट्रेट्स में, यह इसके विपरीत है: ट्रेट का उपयोग करने वाली क्लास में क्लास की पब्लिक के साथ-साथ प्राइवेट मेथड्स और प्रॉपर्टीज भी एक्सेसिबल होंगी।

आइए एक उदाहरण से देखते हैं। मान लीजिए कि हमारे पास एक प्राइवेट मेथड के साथ निम्नलिखित ट्रेट है:

php<?php
  trait TestTrait
  {
    private function method()
    {
      return '!!!';
    }
  }
?>

आइए अपनी क्लास में ट्रेट को कनेक्ट करें:

php<?php
  class Test
  {
    use TestTrait;
  }
  
  new Test;
?>

आइए ट्रेट के प्राइवेट मेथड का उपयोग करें:

php<?php
  class Test
  {
    use TestTrait; // ट्रेट को कनेक्ट करें
    
    public function __construct()
    {
      echo $this->method(); // '!!!' आउटपुट करेगा
    }
  }
  
  new Test;
?>