&
&$this
से हर जगह हटाएं, इसकी आवश्यकता नहीं है। वास्तव में, मुझे लगता है कि आप इस कोड में हर जगह &
हटा सकते हैं - इसकी आवश्यकता नहीं है। और "संदर्भ द्वारा" "मूल्य द्वारा":
लांग स्पष्टीकरण
पीएचपी दो तरह से चर पारित करने के लिए अनुमति देता है। सबसे पहले जिस तरह से ("मूल्य द्वारा"), आप उन्हें अन्य दूसरा तरीका ("संदर्भ द्वारा") आप कर सकते हैं संशोधित नहीं कर सकते,:
function not_modified($x) { $x = $x+1; }
function modified(&$x) { $x = $x+1; }
नोट &
संकेत। यदि मैं एक चर पर modified
पर कॉल करता हूं, तो इसे संशोधित किया जाएगा, अगर मैं not_modified
पर कॉल करता हूं, तो तर्क के मान को वापस करने के बाद यह वही होगा। not_modified(&$x)
: PHP के
पुराने संस्करण ऐसा करके not_modified
साथ modified
के व्यवहार अनुकरण करने के लिए अनुमति दी। यह "संदर्भ द्वारा कॉल-टाइम पास" है। इसे बहिष्कृत किया गया है और इसका कभी भी उपयोग नहीं किया जाना चाहिए।
इसके अतिरिक्त, बहुत प्राचीन PHP संस्करणों में (पढ़ें: PHP 4 और इससे पहले), यदि आप ऑब्जेक्ट्स संशोधित करते हैं, तो आपको इसे संदर्भ से पास करना चाहिए, इस प्रकार &$this
का उपयोग करना चाहिए। यह अब और न आवश्यक है और न ही सिफारिश की है, के रूप में वस्तु हमेशा जब कार्य करने के लिए पारित कर दिया संशोधित कर रहे हैं, यानी यह काम करता है:
function obj_modified($obj) { $obj->x = $obj->x+1; }
यह $obj->x
को संशोधित करेगा, भले ही यह औपचारिक रूप से "मूल्य से" पारित कर दिया है, लेकिन क्या पारित हो जाता है वस्तु है हैंडल (जैसे जावा, इत्यादि) और ऑब्जेक्ट की कॉपी नहीं, क्योंकि यह PHP 4 में थी।
इसका मतलब है, जब तक कि आप कुछ अजीब नहीं कर रहे हैं, आपको लगभग ऑब्जेक्ट पास करने की आवश्यकता नहीं है (और इस प्रकार $this
संदर्भ के अनुसार, यह कॉल-टाइम या अन्यथा हो)। विशेष रूप से, आपके कोड की आवश्यकता नहीं है।
रेफरी: [संदर्भ - क्या इस त्रुटि PHP में क्या मतलब है?] (Http://stackoverflow.com/q/12769982/367456) – hakre
संबंधित मैनुअल पृष्ठ: [संदर्भ द्वारा पासिंग ] (http://php.net/manual/en/language.references.pass.php) – Palec