इस लेख में, हम PHP में पास बाय वैल्यू और पास बाय रेफरेंस के बारे में सीखेंगे।
अब, आइए इन दो कॉन्सेप्ट्स को विस्तार से समझते हैं।
PHP में आमतौर पर, हम फंक्शन को आर्गुमेंट्स पास करने के लिए पास बाय वैल्यू दृष्टिकोण का पालन करते हैं। हम इस अभ्यास का पालन करते हैं क्योंकि यदि फंक्शन के भीतर आर्गुमेंट का मान बदल जाता है, तो यह फंक्शन के बाहर नहीं बदलता।
कुछ मामलों में हमें फंक्शन आर्गुमेंट्स को मॉडिफाई करने की आवश्यकता हो सकती है, इसलिए फंक्शन को अपने आर्गुमेंट्स मॉडिफाई करने की अनुमति देने के लिए, उन्हें पास बाय रेफरेंस द्वारा पास किया जाना चाहिए।
आइए पास बाय रेफरेंस से शुरू करते हैं। जैसा कि पहले उल्लेख किया गया है, हम एक वेरिएबल को फंक्शन में रेफरेंस द्वारा पास कर सकते हैं ताकि फंक्शन वेरिएबल को मॉडिफाई कर सके। पैरामीटर्स को पास बाय रेफरेंस द्वारा पास करने की प्रक्रिया शुरू करने के लिए, फंक्शन परिभाषा में आर्गुमेंट नाम के आगे एम्परसैंड (&) प्रीपेंड करें।
उदाहरण
आइए एक सरल उदाहरण से इसका परीक्षण करें।
<?php
function calculate(&$a){
$a++;
}
$a=5;
calculate($a);
echo $a;
?>
आउटपुट
6
व्याख्या
यहां हमने वेरिएबल $a घोषित किया है और इसे फंक्शन calculate() में पास बाय रेफरेंस के रूप में पास कर रहे हैं। इसलिए सिद्धांत के अनुसार यदि $a का मान फंक्शन के अंदर बदल जाता है तो यह फंक्शन के बाहर भी बदल जाएगा।
नोट
फंक्शन कॉल पर कोई रेफरेंस साइन नहीं होता - केवल फंक्शन परिभाषाओं पर। फंक्शन परिभाषाएं अकेले आर्गुमेंट को सही ढंग से रेफरेंस द्वारा पास करने के लिए पर्याप्त हैं। यह PHP के 5.4 संस्करण में डिप्रेकेटेड है जब आप calculate(&$a) का उपयोग करते हैं तो यह एरर थ्रो करता है।
उदाहरण
पास बाय वैल्यू समझने के लिए एक उदाहरण का परीक्षण करें।
<?php
function calculate($a){
$a++;
echo $a."<br/>";
}
$a=5;
calculate($a);
echo $a;
?>
आउटपुट
6 5
व्याख्या
यहां हमने फंक्शन calculate() को मान पास बाय वैल्यू के रूप में पास किया है। इसका मान फंक्शन के अंदर बदल जाता है लेकिन वह फंक्शन के बाहर प्रतिबिंबित नहीं होता। वेरिएबल का मान फंक्शन के बाहर वही रहता है।