2010-07-15 16 views
19

फ़ंक्शन नाम से पहले & क्या करता है?फ़ंक्शन नाम से पहले और क्या संकेत मिलता है?

क्या इसका मतलब यह है कि $result मूल्य के बजाय संदर्भ द्वारा वापस कर दिया गया है? यदि हां तो क्या यह सही है? जैसा कि मुझे याद है कि आप एक स्थानीय चर के संदर्भ को वापस नहीं कर सकते क्योंकि यह कार्य समाप्त होने के बाद गायब हो जाता है।

function &query($sql) { 
// ... 
$result = mysql_query($sql); 
return $result; 
} 

इसके अलावा जहां इस तरह के एक वाक्य रचना अभ्यास में इस्तेमाल किया जाता है?

उत्तर

7

क्या इसका मतलब है कि $result मूल्य के बजाय संदर्भ द्वारा वापस कर दिया गया है?

हां।

इसके अलावा जहां इस तरह के एक वाक्य रचना अभ्यास में इस्तेमाल किया जाता है?

यह PHP 4 स्क्रिप्ट्स में अधिक प्रचलित है जहां वस्तुओं को डिफ़ॉल्ट रूप से मूल्य के आधार पर पारित किया गया था।

+0

-1 $ परिणाम देने के लिए केवल कार्य के भीतर मौजूद होगा और इसलिए बेकार होगा। – NikiC

+0

@nikic: मैंने अपना जवाब वापस ले लिया। – BoltClock

+0

ठीक है। तो अब मैं यह कहने के लिए -1 देता हूं कि ऑब्जेक्ट्स PHP 5 में मूल्य से पारित नहीं होते हैं ... – NikiC

6

अपने प्रश्न के दूसरे भाग का उत्तर देने के लिए, यहां एक जगह है जहां मुझे इसका उपयोग करना पड़ा: जादू गेटर्स!

class FooBar { 
    private $properties = array(); 

    public function &__get($name) { 
     return $this->properties[$name]; 
    } 

    public function __set($name, $value) { 
     $this->properties[$name] = $value; 
    } 
} 

मैं & वहाँ इस्तेमाल नहीं किया था, तो यह संभव नहीं होगा:

$foobar = new FooBar; 
$foobar->subArray = array(); 
$foobar->subArray['FooBar'] = 'Hallo World!'; 

इसके बजाय PHP जैसे 'परोक्ष रूप से अतिभारित संपत्ति संशोधित नहीं कर सकते' कुछ कह रही है एक त्रुटि फेंक दिया होगा।

ठीक है, यह शायद PHP में कुछ maldesign के दौर के लिए केवल एक हैक है, लेकिन यह अभी भी उपयोगी है।

लेकिन ईमानदारी से, मैं अभी एक और उदाहरण के बारे में नहीं सोच सकता। लेकिन मुझे यकीन है कि कुछ दुर्लभ उपयोग के मामले हैं ...

4

क्या इसका मतलब है कि $result मूल्य के बजाय संदर्भ द्वारा वापस कर दिया गया है?

नहीं। अंतर यह है कि संदर्भ द्वारा वापस किया जा सकता है। उदाहरण के लिए:

<?php 
function &a(&$c) { 
    return $c; 
} 
$c = 1; 
$d = &a($c); 
$d++; 
echo $c; //echoes 2 

इसके अलावा जहां इस तरह के एक वाक्य रचना अभ्यास में इस्तेमाल हो जाता है:

<?php 
function &a(&$c) { 
    return $c; 
} 
$c = 1; 
$d = a($c); 
$d++; 
echo $c; //echoes 1, not 2! 

संदर्भ द्वारा वापस जाने के लिए आपको बस इतना करना होगा?

प्रैक्टिस में, जब भी आप अपने फ़ंक्शन के कॉलर को बिना बताए कैली के स्वामित्व वाले डेटा में हेरफेर करना चाहते हैं, तो आप इसका उपयोग करते हैं। इसका शायद ही कभी उपयोग किया जाता है क्योंकि यह encapsulation का उल्लंघन है - आप लौटा संदर्भ किसी भी मूल्य पर सेट कर सकते हैं; कैली इसे मान्य करने में सक्षम नहीं होगा।

निकिक अभ्यास में उपयोग होने पर इसका एक बड़ा उदाहरण देता है।

+0

यदि फ़ंक्शन को फ़ंक्शन के नाम से पहले और पहले परिभाषित नहीं किया गया है, तो क्या आप अभी भी वैरिएबल को मान के बजाय संदर्भ के साथ वापस कर सकते हैं? –

+0

@ कोरेतुगेय संख्या। – Artefacto

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