2009-11-09 18 views
8
<?php 
    function foo($one, $two){ 
    bar($one); 
    } 

    function bar($one){ 
    echo $one; 
    //How do I access $two from the parent function scope? 
    } 
?> 

अगर मैं ऊपर कोड है, मैं कैसे बार() के भीतर से चर $ दो तक पहुँच सकते हैं, बिना यह एक चर के रूप में में गुजर (अज्ञात कारणों के लिए)।किसी अन्य फ़ंक्शन के दायरे से पहुंच चर?

धन्यवाद,

माइक

+2

संक्षिप्त उत्तर: यदि आप ऐसा नहीं करते। – helloandre

+0

किसी विशेष दायरे में एक चर को परिभाषित करने का पूरा बिंदु एक्सेस को सीमित करना है ताकि यह ** उस ** के बाहर पहुंच योग्य नहीं हो। तो नहीं, यह संभव नहीं है। यदि आप ऐसा करना चाहते हैं, तो इसे स्थानीय दायरे में परिभाषित न करें - कक्षा या वैश्विक दायरे का उपयोग करें। – Smashery

उत्तर

4

एक वर्ग की हो - आप एक उदाहरण क्षेत्र है जो सभी उदाहरण के तरीकों की पहुंच में होगी के रूप में $ दो घोषणा कर सकते हैं:

class Blah { 
    private $two; 
    public function foo($one, $two){ 
    this->$two = $two; 
    bar($one); 
    } 

    public function bar($one){ 
    echo $one; 
    // How do I access $two from the parent function scope? 
    this->$two; 
    } 
} 
+0

जबकि आपके उत्तर ने वास्तव में प्रश्न का उत्तर नहीं दिया था (हालांकि, कक्षा में उपयोग करने के बाहर यह संभव है कि मैं उत्सुक हूं), यह मुझे याद दिलाता है कि मैं पहले से ही कक्षा में था, इसलिए मैंने इसे कक्षा का सदस्य बना दिया। सहायता के लिए बहुत - बहुत धन्यवाद। –

2

एक कच्चे रास्ते निर्यात करने के लिए है यह वैश्विक दायरे में है, उदाहरण के लिए:

<?php 
    function foo($one, $two){ 
    global $g_two; 
    $g_two = $two; 
    bar($one); 
    } 

    function bar($one){ 
    global $g_two; 
    echo $g_two; 
    echo $one; 
    //How do I access $two from the parent function scope? 
    } 
?> 
+0

मुझे नहीं लगता कि यह एक अच्छी सलाह है, यहां तक ​​कि यह काम करेगा। –

0

मैं $ ग्लोबल का उपयोग करता हूं मेरी पूरी लिपि में निबंध चर।

इस तरह

:

public function exist($id) { 
    global $db; 

    $query = "SELECT * FROM web_users_session where user_id='$id'"; 
    return $this->_check = $db->num_req($query); 
} 
+0

क्या आपने एक और जवाब देखा है? आप उन्हें दोहराते हैं और 2 कार्यों के लिए कोड का भी उपयोग नहीं करते हैं –

संबंधित मुद्दे