2010-03-19 19 views
8

पर विचार करें:PHP में इस हस्ताक्षर का अर्थ क्या है (&)?

public function & get($name, $default = null) 

क्यों &?

+0

[संदर्भ? - क्या इस प्रतीक PHP में क्या मतलब है] के संभावित डुप्लिकेट (http://stackoverflow.com/questions/3737139/reference-what-does-this-symbol-mean -इन-पीएचपी) – Gordon

उत्तर

10

PHP के वाक्यविन्यास में, इसका अर्थ यह है कि फ़ंक्शन किसी मान के बजाय संदर्भ देता है।

<?php 
    $foo = 'foo'; 

    function & get_foo_ref() 
    { 
     global $foo; 
     return $foo; 
    } 

    // Get the reference to variable $foo stored into $bar 
    $bar = & get_foo_ref(); 
    $bar = 'bar'; 

    echo $foo; // Outputs 'bar', since $bar references to $foo. 
?> 

उपरोक्त उदाहरण में, समारोह घोषणा से & को हटाने $foo चर अभी भी 'foo' होते हैं, केवल मूल्य के बाद से, नहीं संदर्भ समारोह से वापस आ गया था बनाना होगा: उदाहरण के लिए।

यह अक्सर PHP4 में उपयोग किया जाता था, क्योंकि यह उनके संदर्भ से वस्तुओं को पास नहीं करता था और इसके बजाय उन्हें क्लोन करता था। इस वजह से, अवांछित क्लोनिंग से बचने के लिए ऑब्जेक्ट चर को संदर्भित किया जाना था। यह अब PHP5 में मामला नहीं है और इस उद्देश्य के लिए संदर्भों का उपयोग नहीं किया जाना चाहिए।

हालांकि, संदर्भ लौटने वाले फ़ंक्शंस पूरी तरह से बेकार नहीं हैं (या खराब अभ्यास, जब ऑब्जेक्ट संदर्भों को बदलने के लिए उपयोग नहीं किया जाता है)।

उदाहरण के लिए, व्यक्तिगत रूप से मैंने उन्हें एक स्क्रिप्ट बनाने के दौरान उपयोग किया है जो एक फ़ंक्शन में "पथ" पास करता है, जो उस पथ में चर के संदर्भ को वापस देता है जिससे मुझे मूल्य निर्धारित करने और मूल्य पढ़ने की अनुमति मिलती है। समारोह की पुनरावर्ती प्रकृति के कारण, संदर्भ लौटने की आवश्यकता थी।

rithiur तक

+0

+1 जो सबूत के रूप में दोगुना हो जाता है कि एसओ की रेप सिस्टम उचित नहीं है –

+1

'$ bar = और get_foo_ref(); ', यहां और आवश्यक नहीं है – user198729

+0

@ मॅनोस डिलावेरैकिस: मुझे लगता है कि अच्छी चीजें साझा करना कभी गलती नहीं होगी। – Young

11

इसका मतलब है कि यह परिणाम की एक संदर्भ देता है क्योंकि इसकी एक प्रति के विपरीत।

Returning References in PHP

+0

+1 40 सेकंड से मुझे मारो। –

+0

बस एक sidenote, यह लगभग कभी फायदेमंद नहीं है। ऑब्जेक्ट्स संदर्भ के चारों ओर पास हो जाते हैं। केवल एक चीज जो मदद कर सकती है वह सरणी है (इसलिए उन्हें कॉपी नहीं किया गया है), लेकिन अगर अस्तित्व में है तो लाभ कम से कम है। व्यावहारिक गहराई से स्पष्टीकरण के लिए – ryeguy

संबंधित मुद्दे