2011-04-03 135 views
2

我打電話叫ajax.php(從我的瀏覽器進行測試)變量範圍

ajax.php require_once delete.php

delete.php require_once no_direct.php

文件

delete.php開始是這樣的:

$allowed = array('group'=>'admin'); 
require_once(ASSETS.'/no_direct.php'); //Yes, ASSETS is defined and no_direct is being included. 

在no_direct.php我想:

var_dump($allowed) 

我只是不斷的來到NULL。

是否發生這種情況是因爲我們在ajax.php的require_once函數中運行,並且$允許的範圍回退到GLOBAL範圍,不允許我從no_delete.php訪問它?

我在看這裏:PHP variable defined in 'parent' file not recognized in 'required' file,只是爲了勤奮。

我確信我可以用GLOBAL關鍵字來解決這個問題,但我希望能稍微澄清一下。 PHP範圍文檔似乎沒有回答我的問題。

它被認爲是這種情況沒有包裹在另一個功能。

+0

你不在函數的某個地方嗎? 「ASSETS」是文件路徑嗎? – 2011-04-03 16:38:33

+0

ASSETS包含什麼? – 2011-04-03 16:38:37

+0

是的,ASSETS是一個文件路徑。所以它最終會成爲像C:/ apache/htdocs/ – 2011-04-03 16:40:10

回答

5

在將值分配給$allowed之前,您是否有任何可能已調用require_once(ASSETS.'/no_direct.php');

require_once(ASSETS.'/no_direct.php'); 
... 

$allowed = array('group'=>'admin'); 
require_once(ASSETS.'/no_direct.php'); 

在這種情況下,腳本no_direct.php不應該輸出$allowed

輸出將是:

Notice: Undefined variable: allowed in D:\wampserver\www\gim\no_direct.php on line 2 
NULL 

P.S.還有我在localhost路徑WAMP爲我的測試文件

+2

好猜!將它添加到我的'* _once'討厭列表中! – 2011-04-03 16:51:27

+0

這絕對是。我剛剛在你說的那句話後貼出來,說我找到了同樣的東西。對不起大家。但希望它可以幫助別人。 – 2011-04-03 16:52:35

4

會出現這種情況,因爲我們ajax.php的require_once函數內部運行和$允許的範圍推回全球範圍內不允許我從no_delete.php訪問它?

絕對不是。

關於包含沒有範圍問題。
唯一的範圍依賴問題是用戶定義的函數。所以,如果沒有涉及的功能,唯一的原因可能是一些錯誤/錯誤類型 - 你正在編輯/包括錯誤的文件,或包括通過http或其他類型的HTML代碼。只需仔細檢查。

0

所以我的ajax.php文件還require_once build.php和config.php文件

我build.php文件require_once no_direct.php爲好。

正如函數所示,它只需要no_direct.php一次!

所以我看到的NULL是來自build.php的include,而不是delete.php的include no_delete。