2011-06-05 14 views

उत्तर

7

हां। उन्हें अन्य स्क्रिप्ट सहित किसी भी स्थान से एक्सेस किया जा सकता है। वे थोड़ा बेहतर हैं क्योंकि आपको global कीवर्ड का उपयोग किसी फ़ंक्शन के भीतर से एक्सेस करने के लिए किया जाता है, जो अधिक स्पष्टता देता है कि वे कहां से आ रहे हैं और वे क्या करते हैं।

The disadvantages of global variables apply, लेकिन यह तुरंत उन्हें बुरा नहीं बना देता है क्योंकि अक्सर कुछ ओओ भाषाओं में माना जाता है। यदि वे एक अच्छा समाधान तैयार करते हैं जो कुशल और आसानी से समझ में आता है, तो आप ठीक हैं। सचमुच लाखों सफल PHP परियोजनाएं हैं जो इस तरह घोषित वैश्विक चर का उपयोग करती हैं। आप जो सबसे बड़ी गलती कर सकते हैं वह उनका उपयोग नहीं कर रहा है और आपके कोड को और भी जटिल बना रहा है जब यह पहली जगह में उनका उपयोग करने के लिए बिल्कुल ठीक होगा। : डी

4
<?php 

$foo = 1; 

function meh(){ 
    global $foo; 
    // <-- $foo now can be accessed 
} 

?> 
2

समारोह के बाहर sorta वैश्विक क्षेत्र (जब सी जैसी भाषाओं की तुलना में) की तरह है, लेकिन आप एक समारोह के भीतर वर एक्सेस करने के लिए एक बात है क्या करना है:

function meh(){ 
    global $foo; 
    // $foo now exists in this scope 
} 
2

आपके उदाहरण में $foo वैश्विक दायरे में चर के रूप में बनाया गया है। (जब तक आपकी दिखाई गई स्क्रिप्ट included() अन्य कार्यों/विधियों के दायरे से नहीं थी।)

PHP में वास्तविक वैश्विक चर नहीं हैं। आपको global $foo; कथन का उपयोग करके उन्हें मैन्युअल रूप से उपनाम करना होगा। (इसके अलावा "कुछ भी वैश्विक खराब है" सलाह केवल यही है, बुरी सलाह।)

2

यदि मैं आपके प्रश्न को सही ढंग से समझता हूं, तो वास्तव में कोई समस्या नहीं होनी चाहिए। जब तक आप एक वैरिएबल को ग्लोबल के रूप में घोषित नहीं करते हैं, तो यह उस दायरे तक सीमित रहेगा जिसमें इसे घोषित किया गया है, इस मामले में उपर्युक्त कोड में जो भी php फ़ाइल परिभाषित की गई है। आप meh() में एक और परिवर्तनीय $ foo घोषित कर सकते हैं और यह होगा बाहर परिभाषित $ foo से स्वतंत्र।

7

किसी भी फ़ंक्शन के बाहर परिभाषित सभी चर वैश्विक स्तर पर घोषित किए गए हैं।

  1. वैश्विक कीवर्ड

    <?php 
    $a = 1; 
    $b = 2; 
    
    function Sum() 
    { 
        global $a, $b; 
    
        $b = $a + $b; 
    } 
    ?> 
    
  2. का उपयोग करें या $ वैश्विक

    <?php 
    $a = 1; 
    $b = 2; 
    
    function Sum() 
    { 
        $GLOBALS['b'] = $GLOBALS['a'] + $GLOBALS['b']; 
    } 
    ?> 
    

    और अधिक पढ़ें का उपयोग करें: यदि आप एक वैश्विक चर का उपयोग करना चाहते हैं तो आपके पास दो विकल्प http://php.net/manual/en/language.variables.scope.php

  3. पर
संबंधित मुद्दे