मुझे php में वैश्विक चर के साथ समस्या हो रही है। मेरे पास एक फ़ाइल में $screen
var सेट है, जिसके लिए एक और फ़ाइल की आवश्यकता है जो initSession()
को किसी अन्य फ़ाइल में परिभाषित करता है। initSession()
global $screen
घोषित करता है और फिर पहली स्क्रिप्ट में मान सेट का उपयोग करके $ स्क्रीन को और नीचे संसाधित करता है।PHP में वैश्विक चर अपेक्षित के रूप में काम नहीं कर रहे हैं
यह कैसे संभव है?
चीजों को और अधिक भ्रमित करने के लिए, यदि आप फिर से $ स्क्रीन सेट करने का प्रयास करते हैं तो initSession()
पर कॉल करें, यह पहले उपयोग किए जाने वाले मान का उपयोग करता है। निम्नलिखित कोड प्रक्रिया का वर्णन करेगा। क्या किसी को यह समझाने में जाना चाहिए?
$screen = "list1.inc"; // From model.php
require "controller.php"; // From model.php
initSession(); // From controller.php
global $screen; // From Include.Session.inc
echo $screen; // prints "list1.inc" // From anywhere
$screen = "delete1.inc"; // From model2.php
require "controller2.php"
initSession();
global $screen;
echo $screen; // prints "list1.inc"
अद्यतन:
तो मैं घोषणा $screen
वैश्विक फिर सिर्फ दूसरे मॉडल की आवश्यकता से पहले, $ स्क्रीन ठीक initSession()
विधि के लिए अद्यतन किया जाता है। अजीब।
'वैश्विक $ ए; 'का उपयोग करने का कोई उपयोग नहीं है,' $ ए = और $ ग्लोबल्स [' ए ']; 'के बराबर है। यही है, यह एक ही नाम के साथ स्थानीय दायरे में एक संदर्भ बनाता है। एक समारोह के बाहर, आप हमेशा वैश्विक दायरे में रहते हैं। PHP "फ़ाइल स्कोप" प्रदान नहीं करता है। – Matthew