2015-09-05 62 views
3

我試圖讓require_once工作,所以我可以從我的引導文件中使用變量內容。目前,我有以下文件結構:PHP require_once找不到變量

(文件夾)LIB

(文件夾)模板

(文件)的bootstrap.php

在我的bootstrap.php文件我有以下陣列:

$config = array(
"db" => array(
    "db" => array(
     "dbname" => "name", 
     "username" => "user", 
     "password" => "pass", 
     "host" => "localhost" 
    ), 
), 
"paths" => array(
    "resources" => "/src", 
) 
); 

在我的lib文件夾中,我有以下2個文件:

Database.php User.php

這兩個都是類。在我user.php的文件,我想利用在bootstrap.php中文件中定義的數組,所以我做

require_once __DIR__ . '/../bootstrap.php'; 

其中DIR是當前文件夾,然後再下降一個等級至boostrap.php位於。但是,當我做了如下因素電話:

var_dump($config); 

我得到:

Notice: Undefined variable: config in ...\src\lib\User.php on line 37 
NULL 

什麼我做錯了任何想法?

+0

對於調試,我會嘗試回顯bootstrap.php中的內容。如果文本沒有顯示,文件沒有被正確包含。如果它確實顯示出來,可能是變量被取消設置或超出範圍。 – bytesized

回答

0

不確定,但試試這個。 EDITED

require_once('./../bootstrap.php'); 

require('./../bootstrap.php'); 

,而不是這個

require_once __DIR__ . '/../bootstrap.php'; 
+0

仍然不工作 –

+0

@MaritzaGuerreiro現在我認爲它會工作。編輯:) – aimme

+0

@MaritzaGuerreiro添加一個額外的點和斜槓來表示當前目錄:) – aimme

0

使用include(file.php);include_once(file.php);代替。

+0

仍然沒有工作:( –

+0

確保路徑是正確的,並且文件存在,試試這個'require_once __DIR__。'/../bootstrap.php'或死('無法獲取文件');'if它會給你錯誤,你必須檢查路徑 – KeepoN

+0

如果文件不能被包含,PHP應該已經死了,這不是include'和require'之間的區別麼? – bytesized

0

我不知道在UNIX系統上,但在Windows DIR輸出的東西C線的行爲:\ Apache24 \ htdocs目錄。注意那裏的反斜槓。除非您使用DIR,否則這不適用於文件名稱。 「.. \庫\ user.php的」

0

的對需要和require_once參數是相對於腳本文件,通過你的PHP運行時被調用。因此,如果User.php在其他地方被需要(例如通過你的根index.php),提供給你的require語句的路徑需要相對於index.php,而不管你的require語句在哪個文件中。

如果你看看php框架如何處理這個問題,他們通常會在引導序列(這是磁盤上的項目的絕對路徑)中設置一些全局APP_PATH變量。

這樣,你需要的地方需要的東西,你會基地起飛APP_PATH的路徑。