⊗ppOpAdPBR 23 of 107 menu

PHP में OOP में ऑब्जेक्ट्स का रेफरेंस द्वारा पासिंग

मान लीजिए हमारे पास User नामक एक क्लास है:

<?php class User { public $name; public $age; public function __construct($name, $age) { $this->name = $name; $this->age = $age; } } ?>

मान लीजिए हम इस क्लास का एक ऑब्जेक्ट बनाते हैं:

<?php $user = new User('john', 30); ?>

अब इस स्थिति की कल्पना करें: आप वेरिएबल $user का मान किसी अन्य वेरिएबल को असाइन करना चाहते हैं, उदाहरण के लिए $test

यदि बात ऑब्जेक्ट्स की नहीं, बल्कि प्रिमिटिव्स की हो रही होती, यानी स्ट्रिंग्स, नंबर्स, ऐरे इत्यादि की, तो वेरिएबल $test में $user वेरिएबल के मान की एक कॉपी जाती।

इसका मतलब है कि भविष्य में किसी भी वेरिएबल में परिवर्तन दूसरे वेरिएबल के मान को नहीं बदलता। आइए एक उदाहरण से देखें:

<?php $user = 1; $test = $user; // $test वेरिएबल में अब 1 है $test = 2; // $test वेरिएबल में अब 2 है, लेकिन $user में अभी भी 1 है ?>

ऑब्जेक्ट्स के साथ मामला अलग है - दूसरे वेरिएबल में असाइन करने पर ऑब्जेक्ट्स कॉपी नहीं होते, बल्कि रेफरेंस द्वारा पास होते हैं: इसका मतलब है कि इन दोनों वेरिएबल्स का मान एक ही ऑब्जेक्ट होता है। इसका एक महत्वपूर्ण परिणाम है: यदि एक वेरिएबल का उपयोग करके ऑब्जेक्ट के कुछ प्रॉपर्टीज को बदला जाए, तो दूसरे वेरिएबल में भी यही परिवर्तन दिखाई देंगे।

आइए व्यवहार में देखें। यूजर के साथ एक ऑब्जेक्ट बनाएं:

<?php $user = new User('john', 30); ?>

ऑब्जेक्ट को दूसरे वेरिएबल में असाइन करें:

<?php $test = $user; ?>

$test वेरिएबल में name प्रॉपर्टी को बदलें

<?php $test->name = 'eric'; ?>

आइए जांचें कि क्या साझा ऑब्जेक्ट बदल गया है। $user वेरिएबल से name प्रॉपर्टी आउटपुट करें:

<?php echo $user->name; // 'eric' आउटपुट करेगा! ?>

Product नामक एक क्लास बनाएं, जिसमें निम्नलिखित प्रॉपर्टीज हों: name, price

Product क्लास का एक ऑब्जेक्ट बनाएं, इसे $product1 वेरिएबल में रिकॉर्ड करें।

$product1 वेरिएबल का मान $product2 वेरिएबल में असाइन करें। जांचें कि क्या दोनों वेरिएबल्स एक ही ऑब्जेक्ट को रेफर कर रहे हैं।

हिन्दी
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
हम साइट के कार्य, विश्लेषण और व्यक्तिगतकरण के लिए कुकीज़ का उपयोग करते हैं। डेटा प्रसंस्करण गोपनीयता नीति के अनुसार किया जाता है।
सभी स्वीकार करें कॉन्फ़िगर करें अस्वीकार करें