दिलचस्प पोस्ट
यूआरएल से बिटमैप तक एंड्रॉइड लोड एफ # में इरोटोथेनिनेस की छलनी अलग प्रतिनिधि / डेटा स्रोत का उपयोग करते समय UITableView समस्या UIScrollView – स्क्रॉल बार दिखा रहा है एक जनरेटर समझ कैसे काम करता है? सी ++ वेक्टर तत्व को स्थान से बजाय मूल्य से मिटा दें? स्विफ्ट में UI_USER_INTERFACE_IDIOM () के साथ वर्तमान उपकरण का पता लगाएं JS / jQuery का उपयोग करके टचस्टार्ट समर्थन के लिए ब्राउज़र की जांच कैसे करें? Plist में डेटा कैसे लिखने के लिए? लूप करते समय आप कैसे विभिन्न वैरिएबल नाम बनाते हैं? (अजगर) ट्विटर बूटस्ट्रैप सक्रिय वर्ग को ली में जोड़ें भारित यादृच्छिक चयन और प्रतिस्थापन के बिना ओरेकल में आरक्षित शब्द से बचने के लिए कैसे? जावास्क्रिप्ट में JSON पार्स करें? Regexes में एक शब्द सीमा क्या है?

जब PHP में पास-बाय-रेफरे को भेजा जाए

मैं सोच रहा हूं कि यदि आप केवल एक चर पढ़ रहे हैं, या यदि यह हमेशा एक मूल्य के रूप में पारित किया जाना चाहिए, तो इसका अच्छा अभ्यास पास-बाय-संदर्भ के लिए है।

पास-बाय-संदर्भ के साथ उदाहरण:

$a = 'fish and chips'; $b = do_my_hash($a); echo $b; function &do_my_hash(&$value){ return md5($value); } 

पास-बाय-वैल्यू के साथ उदाहरण:

 $a = 'fish and chips'; $b = do_my_hash($a); echo $b; function do_my_hash($value){ return md5($value); } 

कौनसा अच्छा है ? अगर मैं 1000 राउंड के साथ एक पाश चलाने के लिए था?

पाश का उदाहरण:

 for($i = 0 ; $i < 1000 ; $i++){ $a = 'Fish & Chips '.$i; echo do_my_hash($a); } 

वेब के समाधान से एकत्रित समाधान "जब PHP में पास-बाय-रेफरे को भेजा जाए"

यदि आप किसी मान को पारित करना चाहते हैं (इसलिए फ़ंक्शन इसे संशोधित नहीं करता है) , संदर्भ से इसे पारित करने का कोई कारण नहीं है: यह केवल आपके कोड को समझने के लिए कठिन बना देगा, क्योंकि लोग सोचेंगे " यह फ़ंक्शन मुझे संशोधित कर सकता है इसे पास करें – ओह, यह इसे संशोधित नहीं करता है? "

आपके द्वारा प्रदान किए गए उदाहरण में, आपका do_my_hash फ़ंक्शन उस मान को संशोधित नहीं करता है जिसे आप पास कर रहे हैं; इसलिए, मैं संदर्भ का उपयोग नहीं करेगा

और अगर आप प्रदर्शन के बारे में चिंतित हैं, तो आपको इस हालिया ब्लॉग पोस्ट को पढ़ना चाहिए: PHP संदर्भों का उपयोग न करें :

एक और कारण है कि लोग संदर्भ का उपयोग करते हैं क्योंकि उन्हें लगता है कि यह कोड को तेज़ बनाता है। लेकिन यह गलत है। यह और भी खराब है: संदर्भ ज्यादातर कोड धीमी बनाते हैं! हां, संदर्भ अक्सर कोड धीमा करते हैं – क्षमा करें, मुझे इसे दोहराने के लिए इसे स्पष्ट करना था।

दरअसल, यह लेख एक दिलचस्प पठन हो सकता है, भले ही आप मुख्य रूप से प्रदर्शन के बारे में चिंतित न हों 😉

पीएचपी कॉपी-ऑन-लिस्ट का जितना संभव हो उतना अधिक उपयोग करता है (जब भी वह आमतौर पर प्रदर्शन को बढ़ाएगा) तो संदर्भ का उपयोग करने से आपको कोई प्रदर्शन लाभ नहीं मिल रहा है; यह केवल चोट लगी होगी संदर्भों का उपयोग केवल तभी करें जब आपको वास्तव में उनकी आवश्यकता हो। PHP मैनुअल से:

कार्यक्षमता बढ़ाने के लिए रिटर्न-बाय-संदर्भ का उपयोग करें इंजन स्वतः ही इस पर अपने आप अनुकूलित करेगा जब आपके पास ऐसा करने के लिए एक वैध तकनीकी कारण है, तो केवल संदर्भ लौटाएं

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

केवल उन मामलों में जहां आपको संदर्भ से पारित करना पड़ सकता है, जहां आपको कई मानों को संशोधित करने की आवश्यकता है हालांकि इन मामलों में दुर्लभ होते हैं और आमतौर पर आपको कोड की जांच करने के लिए ध्वज के रूप में व्यवहार किया जाना चाहिए क्योंकि संभवत: समस्या का सामना करने का एक बेहतर तरीका है।

दिन में शुरुआती प्रोग्रामिंग भाषाएं हमेशा संदर्भ से गुजरती थीं और मूल्य से गुजर रही थीं जो बाद में विकसित की गई समस्याओं से निपटने के लिए बाद में विकास थीं (आप उस अस्पष्ट बग के साथ समाप्त होते हैं क्योंकि अभी या बाद में कुछ प्रोग्रामर पास में संशोधन करने के लिए कोड डालता है कुछ फ़ंक्शन या अन्य में संदर्भ मान द्वारा और फिर यह पता लगाना मुश्किल है कि कहां और ठीक से ठीक – आप कई, अस्पष्ट, निर्भरता के साथ समाप्त होते हैं)। नतीजतन, यह वास्तव में बहुत ही प्रतिकूल है कि हम इस पर गंभीरता से कुछ मशीन चक्रों को शेविंग के विकल्प के रूप में मानते हैं जब हम प्रोसेसर की कई पीढ़ियों के बिंदु से परे होते हैं, जब इसे सीपीयू बनाम जटिलता का अच्छा व्यापार माना जाता था, ताकि वह स्वच्छ, कोड।

सूक्ष्म अनुकूलन की खुशी 🙂

ईमानदार होने के लिए, संभवतः संदर्भ द्वारा 'सामान्य' चर को पारित करके प्राप्त करने के लिए कोई बड़ा सौदा नहीं है (जब तक कि आप उनके मूल दायरे में उनके मूल्य को प्रभावित नहीं करना चाहते) इसके अलावा, PHP 5 ऑब्जेक्ट्स संदर्भ से स्वचालित रूप से पारित किए जाते हैं।

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