संक्षिप्त उत्तर उपयोग संदर्भ जब आप कार्यक्षमता है कि वे उपलब्ध कराने की जरूरत है। स्मृति उपयोग या गति के संदर्भ में उनके बारे में मत सोचो। संदर्भ द्वारा पास हमेशा धीमा होने जा रहा है यदि चर केवल पढ़ने के लिए है।
सबकुछ वस्तुओं सहित मूल्य से गुजरता है। हालांकि, यह है जो पारित ऑब्जेक्ट के को संभालता है, इसलिए लोग अकसर गलती से इसे संदर्भ द्वारा कॉल करते हैं क्योंकि ऐसा लगता है।
फिर यह कौन सी कार्यक्षमता प्रदान करता है? यदि आप इस तरह की कार्यक्षमता की जरूरत है (सबसे अधिक बार तुम नहीं), तो एक संदर्भ का उपयोग
class Bar {}
$bar = new Bar();
function by_val($o) { $o = null; }
function by_ref(&$o) { $o = null; }
by_val($bar); // $bar is still non null
by_ref($bar); // $bar is now null
तो: यह आपको बुला रहा दायरे में चर संशोधित करने की क्षमता देता है। अन्यथा, बस मूल्य से गुजरें।
कार्य है कि इस तरह दिखेगा:
$foo = modify_me($foo);
कभी कभी पारित-दर-संदर्भ के लिए अच्छा उम्मीदवार हैं, लेकिन यह बिल्कुल स्पष्ट समारोह को संशोधित करता है कि चर में पारित किया जाना चाहिए। (और यदि ऐसा कोई कार्य उपयोगी होता है, तो अक्सर ऐसा इसलिए होता है क्योंकि इसे वास्तव में अपने स्वयं के निजी डेटा को संशोधित करने वाले कुछ वर्गों का हिस्सा होना चाहिए।)
बस एक सी ++ संबंधित नोट: कार्यों में पारित किए गए Arrays वास्तव में पॉइंटर्स हैं, इसलिए संदर्भ पारित करना उनके लिए अनावश्यक है और वास्तव में ऐसा नहीं करता जो आपको लगता है कि यह करता है। यद्यपि पूरी तरह से कॉन्स्ट पर सहमत हैं! – Aaron