2010-10-17 64 views
2

我想從所要求的文件中訪問父文件中定義的變量,就像這樣:PHP變量在「必要」文件文件無法識別

< < < parent.php >> >

$controller = 'index'; 
require ('child.php'); 

< < < child.php >>>

echo $controller; 

莫名其妙地,我收到一個空輸出,這意味着該變量不能通過child.php訪問.. 我在這裏做錯了什麼?如果可能的話,請讓我知道如何在我的child.php文件中調用上面的變量,如果上面看起來是錯誤的。

問候
尼基爾古普塔

+1

它應該這樣工作。你是否100%確定'child.php'被包含在內? – 2010-10-17 16:14:41

+0

嘗試打印「測試」作爲一個常數,以確保該文件包含在Pekka說... – tpow 2010-10-17 16:19:48

+0

@Pekka:是的,child.php包括在內。 child.php裏面的其他功能很容易運行。 @cinqo:是包含文件。 – Stoic 2010-10-17 16:28:40

回答

4

被宣佈爲在函數體外部的變量?如果不是,它需要。

此外,從你的子文件調用變量時,嘗試「初始化」,它與全球關鍵字使用前...

Global $myParentVariable; 

...然後嘗試打印。另外,出於調試的目的,請將變量設置爲父文件中的常量,而不是派生某些函數中的值。換句話說,確保它不是一個將值變爲null的函數。 (我看到你在做這件事 - 但不知道你是否爲了簡單而修改它)

+0

好啊..在child.php中,我試圖在函數內傳遞這個$ controller變量(作爲參數),但是這不應該影響這個權利?我也嘗試通過print(和var_dump)語句轉儲變量,並且都給了我null輸出。最奇怪的是,這在我的本地主機上運行,​​但我的服務器並不喜歡它。 – Stoic 2010-10-17 16:26:45

+0

@Stoic - 你能發佈實際的代碼嗎? – tpow 2010-10-17 16:32:26

+0

。我提供了上面的代碼.. – Stoic 2010-10-17 16:47:41

0

這很奇怪。嘗試看看是否變量定義的變量的一部分:

$vars = get_defined_vars(); 
print_r($vars); 

此外,如果在一個函數存在的變量,你可以用global關鍵字全球化了。

+0

是的,我沒有訪問函數內部的變量,只是試圖將它作爲函數的參數傳遞。 :| – Stoic 2010-10-17 16:28:05

1

好的,在這裏找到了問題。 我想這是我的一個錯誤。 錯誤不在上述行中,但不知何故另一個變量是訪問父php,直接訪問子php。

所以,猜猜,它現在運行了,爲什麼變量不可用。