दिलचस्प पोस्ट
मैं डीजेंगो में इस दौड़ की स्थिति से कैसे निपटूं? एक खाली JQuery ऑब्जेक्ट प्राप्त करना एक नियंत्रक में पैरामीटर से एक Grails तिथि बाध्यकारी क्रॉस जॉइन बनाम इंन्अर SQL सर्वर 2008 में शामिल हों सी ++ चेतावनी: स्ट्रिंग निरंतर से 'चार *' के लिए पदावनत रूपांतरण शीर्षक वाली पंक्तियों और स्तंभों के साथ JTable क्या मैं JSON को पायथन में एक ऑर्डर किए गए आदेश में लोड कर सकता हूं? टेक्स्ट JavaScript से एचटीएमएल स्ट्रिप करें गैर प्रकार के टेम्पलेट पैरामीटर उप-वर्ग से फ़्रेम विधियां कॉल करना सरणी में अंतिम कुंजी कैसे प्राप्त करें? जीआईटी की शाखाओं में गिट टैग कैसे अलग हैं? जब एचटीएमएल इकाइयों का इस्तेमाल किया जाना चाहिए VBA (एक्सेल) में पंक्तियों के माध्यम से लूप का सबसे प्रभावी / तेज़ तरीका क्या है? WinForms ऐप में कस्टम शीर्षकबार / क्रोम

एक PHP से एक चर को पास करने में दूसरे को शामिल करें: वैश्विक बनाम नहीं

मैं एक फ़ाइल को दूसरे में शामिल करने के लिए एक चर को पारित करने की कोशिश कर रहा हूँ। यह तब तक काम नहीं कर रहा है जब तक कि मैं वैरिएबल को दूसरे में शामिल फ़ाइल में ग्लोबल घोषित नहीं करता। हालांकि, मुझे इसे फ़ाइल में वैश्विक रूप में घोषित करने की ज़रूरत नहीं है जो कि पहले शामिल है उदाहरण के लिए:


front.inc:

$name = 'james'; 

index.php:

 include('front.inc'); echo $name; include('end.inc'); 

आउटपुट: जेम्स


end.inc:

 echo $name; 

आउटपुट: कुछ भी नहीं


यदि मैं end.inc में $ नाम को प्रतिध्वनित करने से पहले वैश्विक $ नाम की घोषणा करता हूं, तो यह ठीक से काम करता है I इस पोस्ट का स्वीकार्य जवाब बताता है कि यह आपके सर्वर कॉन्फ़िगरेशन पर निर्भर करता है: एक फ़ाइल से दूसरे में PHP में चर को पास करना

मैं एक अपाचे सर्वर का उपयोग कर रहा हूँ मैं इसे कैसे कॉन्फ़िगर करूँगा ताकि $ नाम को वैश्विक होने की घोषणा करना जरूरी नहीं है? क्या कोई अन्य लाभ के फायदे / नुकसान हैं?

वेब के समाधान से एकत्रित समाधान "एक PHP से एक चर को पास करने में दूसरे को शामिल करें: वैश्विक बनाम नहीं"

जब पीएचपी में फाइलें शामिल होती हैं, तो यह कार्य करता है जैसे कोड उस फ़ाइल में मौजूद होता है जिसे वे शामिल किया जा रहा है। अपने index.php फ़ाइलों में से प्रत्येक को सीधे अपने index.php में कोड कॉपी और पेस्ट करें। इसी तरह के साथ पीएचपी कैसे काम करता है

इसलिए, आपके उदाहरण में, चूंकि आपने अपने front.inc फ़ाइल में $name एक चर निर्धारित किया है, और फिर अपने index.php में front.inc और end.inc दोनों को शामिल किया है, तो आप चर $name को echo सकते हैं आपके index.php में front.inc के include होने के बाद कहीं भी। फिर, PHP आपकी index.php को संसाधित करती है, जैसे कि आप जिन फाइलों को शामिल कर रहे हैं उनमें से कोड फ़ाइल का हिस्सा हैं।

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

दूसरे शब्दों में, आपके द्वारा अपेक्षित व्यवहार को करने के लिए, आपको इसे वैश्विक रूप से परिभाषित करना होगा

यहाँ से बचने के लिए एक ख़तरा है यदि आपको किसी फ़ंक्शन के भीतर आपके चर $ नाम का उपयोग करने की आवश्यकता है, तो आपको "वैश्विक $ नाम" कहने की ज़रूरत है; उस समारोह की शुरुआत में आपको एक ही फाइल में प्रत्येक फ़ंक्शन के लिए इसे दोहराना होगा।

 include('front.inc'); global $name; function foo() { echo $name; } function bar() { echo $name; } foo(); bar(); 

केवल त्रुटियों को प्रदर्शित करेगा ऐसा करने का सही तरीका होगा:

 include('front.inc'); function foo() { global $name; echo $name; } function bar() { global $name; echo $name; } foo(); bar(); 

यह आपको बस करना है:

सामने में

 global $name; $name = 'james'; 

मेरे पास एक अजीब समाधान है फ़ाइल end.inc , इस रेखा को जोड़ें:

 $name=$name; 

फिर गूंज काम करेगा

मैंने इस प्रोजेक्ट में इस समाधान में एक अच्छा स्पष्टीकरण के बिना मारा, ऐसा क्यों काम किया