परिचय
PHP में, वस्तुओं को डिफ़ॉल्ट रूप से संदर्भों द्वारा पारित किया जाता है। यहां, संदर्भ एक उपनाम है, जो दो अलग-अलग चर को एक ही मान पर लिखने की अनुमति देता है। ऑब्जेक्ट वैरिएबल में ऑब्जेक्ट ही मान के रूप में नहीं होता है। इसमें केवल एक वस्तु पहचानकर्ता होता है जो वास्तविक वस्तु का उपयोग करने की अनुमति देता है। जब कोई ऑब्जेक्ट तर्क द्वारा भेजा जाता है, लौटाया जाता है या असाइन किया जाता है, तो विभिन्न चर उपनाम नहीं होते हैं - इसके बजाय, वे एक ही ऑब्जेक्ट की ओर इशारा करते हुए पहचानकर्ता की एक प्रति रखते हैं।
उदाहरण
PHP में spl_object_hash() . है फ़ंक्शन जो किसी ऑब्जेक्ट की अद्वितीय हैश आईडी देता है। निम्नलिखित कोड में, दो ऑब्जेक्ट वेरिएबल, एक ही ऑब्जेक्ट को संदर्भित करते हुए एक ही आईडी लौटाते हैं
उदाहरण
<?php class test1{ public $name; } $obj1=new test1(); echo "ID of obj1: " . spl_object_hash($obj1) . "\n"; $obj2=$obj1; echo "ID of obj2: " . spl_object_hash($obj2); ?>
आउटपुट
परिणाम दिखाता है कि दोनों चरों की आईडी समान है
ID of obj1: 000000004355dda6000000006f04b1a7 ID of obj2: 000000004355dda6000000006f04b1a7
जब हम किसी ऑब्जेक्ट वेरिएबल का रेफरेंस बनाते हैं, तो नाम से पहले और प्रीफिक्स करके, प्रॉपर्टीज में कोई भी बदलाव रेफरेंस वेरिएबल में अपने आप दिखाई देता है
उदाहरण
<?php class test1{ public $name; } $obj1=new test1(); echo "ID of obj1: " . spl_object_hash($obj1) . "\n"; $obj2=&$obj1; echo "ID of obj2: " . spl_object_hash($obj2) . "\n"; $obj1->name="Amar"; echo "name: " .$obj2->name; ?>
आउटपुट
उपरोक्त कोड अब आउटपुट के बाद नाम देता है
ID of obj1: 00000000163cf0b8000000003ad0ed93 ID of obj2: 00000000163cf0b8000000003ad0ed93 name: Amar