php - Can't access global variable inside function -


यह (मेरे कोड का सरलीकृत संस्करण) काम नहीं करता है:

  & lt ;? Php $ sxml = नया SimpleXMLElement ('& lt; somexml / & gt;'); फ़ंक्शन फू () {$ child = $ sxml- & gt; जोड़ चाइल्ड ('बच्चे'); } Foo (); ? & Gt;   

क्यों? मैं $ sxml तक पहुँचना चाहता हूं क्योंकि मैं उस पर त्रुटियों को लॉग करना चाहता हूं यदि foo () विफल रहता है। डायरेक्टरी लिस्टिंग बनाने के लिए foo () कॉलों को पुनरावर्तित रूप से कॉल करता है, इसलिए मुझे पूरे $ sxml से गुजरने का डर है (जैसे foo ($ sxml) ) प्रदर्शन को नुकसान पहुंचा सकता है।

क्या $ sxml को अंदर $ foo तक पहुंचने का एक तरीका है? (PHP 5.2.x +)

संपादित करें: क्या होगा अगर कोड ऐसा दिखता है, वास्तव में?

  & lt;? Php बार () {$ sxml = नया SimpleXMLElement ('& lt; somexml / & gt;'); फ़ंक्शन फू () {$ child = $ sxml- & gt; जोड़ चाइल्ड ('बच्चे'); } Foo (); } बार (); ? & Gt;    

आपको इसे फ़ंक्शन पर देना होगा:

 < कोड> & lt;? Php $ sxml = नया SimpleXMLElement ('& lt; somexml / & gt;'); फ़ंक्शन फू ($ sxml) {$ child = $ sxml- & gt; जोड़ चाइल्ड ('बच्चे'); } फ़ू ($ sxml); ? & Gt;   

या इसे घोषित करें:

  & lt;? Php $ sxml = नया SimpleXMLElement ('& lt; somexml / & gt;'); फ़ंक्शन फू () {वैश्विक $ sxml; $ Child = $ sxml- & gt; जोड़ें चाल्ड ('बच्चे'); } Foo (); ? & Gt;   

यदि चर वैश्विक नहीं है लेकिन इसके बजाय एक बाहरी फ़ंक्शन में परिभाषित किया गया है, तो पहला विकल्प (तर्क के रूप में) एक ही काम करता है:

  & Lt;? Php फ़ंक्शन बार () {$ sxml = नया SimpleXMLElement ('& lt; somexml / & gt;'); फ़ंक्शन फू ($ sxml) {$ child = $ sxml- & gt; जोड़ चाइल्ड ('बच्चे'); } फ़ू ($ sxml); } बार (); ? & Gt;   

वैकल्पिक रूप से, एक उपयोग खंड में वेरिएबल को घोषित करके बनाएं।

  & lt;? Php फ़ंक्शन बार () { $ Sxml = नया SimpleXMLElement ('& lt; somexml / & gt;'); फ़ंक्शन फू () का उपयोग करें (& amp; $ xml) {$ child = $ sxml- & gt; जोड़ चाइल्ड ('बच्चे'); } Foo (); } बार (); ? & Gt;    

Comments