PHP में OOP के माध्यम से गुणों को प्राप्त करने की जादू

अगली जादुई विधि जिसे हम समझेंगे, उसे __get कहा जाता है। यह विधि तब सक्रिय होती है जब किसी निजी या संरक्षित गुण का मान पढ़ने का प्रयास किया जाता है।

यदि किसी वर्ग में __get विधि को लागू किया जाता है, तो गैर-मौजूद या छिपे हुए गुणों तक सभी पहुंच इस विधि द्वारा संसाधित की जाएगी।

इस दौरान PHP स्वचालित रूप से अनुरोध किए गए गुण का नाम इस विधि के पहले पैरामीटर में पास करेगा, और इस विधि द्वारा लौटाया गया मान उस गुण का मान माना जाएगा, जिस तक पहुंच की गई थी।

शायद अभी तक बहुत स्पष्ट नहीं है कि यह कैसे काम करता है, इसलिए आइए एक व्यावहारिक उदाहरण देखें। मान लीजिए कि हमारे पास Test नामक एक वर्ग है जिसमें एक निजी और एक सार्वजनिक गुण है:

Test.php<?php
  class Test
  {
    public  $prop1 = 1; // सार्वजनिक गुण
    private $prop2 = 2; // निजी गुण
  }
?>

आइए हम अपने वर्ग में जादुई विधि __get जोड़ें, जो शुरुआत में बस उस गुण का नाम लौटाएगी, जिस तक पहुंच हुई थी:

Test.php<?php
  class Test
  {
    public  $prop1 = 1;
    private $prop2 = 2;
    
    public function __get($property)
    {
      return $property; // बस गुण का नाम लौटाएं
    }
  }
?>

आइए बनाई गई जादुई विधि के काम की जांच करें। आइए तीन प्रकार के गुणों तक पहुंचें: सार्वजनिक गुण, निजी गुण और गैर-मौजूद गुण:

index.php<?php
  $test = new Test;
  
  // सार्वजनिक गुण तक पहुंच:
  echo $test->prop1; // 1 प्रिंट करेगा - यानी गुण का मान
  
  // निजी गुण तक पहुंच:
  echo $test->prop2; // 'prop2' प्रिंट करेगा - गुण का नाम
  
  // गैर-मौजूद गुण तक पहुंच:
  echo $test->prop3; // 'prop3' प्रिंट करेगा - गुण का नाम
?>

जैसा कि आप देख रहे हैं, हमारी जादुई विधि निजी और गैर-मौजूद गुणों तक पहुंच पर प्रतिक्रिया करती है, लेकिन सार्वजनिक गुणों तक पहुंच को अनदेखा करती है - वे पहले की तरह ही काम करते रहते हैं।