2012-04-25 103 views
7

正如我們所知,全球關鍵字使變量(或對象,數組)可見,我們正在處理全球關鍵字

<?php 

$some_var = 'some string'; 

function __test(){ 
    global $some_var; 
    echo $some_var; // some string 
} 

但是,一些開發公司仍然使用global關鍵字職能以外的電流函數內起初看起來它對我沒有任何意義。

嗯,問題是:在函數外部使用'global'關鍵字是否有意義?

+0

您確定它正在使用的範圍? – 2012-04-25 01:00:32

+0

我甚至在index.php文件中看到「global $ some_var」 - 實際上它不會在任何函數中。我確信範圍 – Yang 2012-04-25 01:02:13

+0

@metal_fan我懷疑你在一個單獨的文件中看到了函數的內涵。 – Sampson 2012-04-25 01:10:48

回答

7

docs

使用全局關鍵字在函數外是不是一個錯誤。如果文件包含在函數中,則可以使用它。

基本上,你可以讓你的函數膽量與你的函數聲明不同。這些膽量將被納入該功能。如果您單獨看到一個用戶使用global以外的函數,這會給人一種印象,但事實是,當解釋此代碼時,它將從中的一個函數中解釋爲

$name = "Jonathan"; 

function doSomething() { 
    include('functionGuts.php'); 
} 

當我們functionGuts.php文件的內容可能是:

global $name; 
echo "Hello, " . $name; 

當自己的觀察,functionGuts.php將給人的印象是global正在使用外部的功能的,而實際上它是像這樣使用:

$name = "Jonathan"; 

function doSomething() { 
    global $name; 
    echo "Hello, " . $name; 
} 
0

函數之外的全局關鍵字根本沒有做任何事情。但該文件可能包含在一個函數中。

我使用它的另一件事不是讓我的代碼可讀和更有條理。任何我想在函數中使用全局關鍵字訪問的變量,我在主文件中聲明瞭全局變量,所以只需簡短一眼,我知道它是作爲全局引用的。 (意思是不要重命名,因爲其他地方在其他地方使用... :))