2010-06-12 59 views
4

我目前正在進行單元測試,並使用文件夾來組織我的測試用例。例如,所有與管理用戶帳戶相關的案例都在\ tests \ accounts下。隨着時間的推移,有更多的測試用例,我開始按類型分開,例如\ tests \ accounts \ create,\ tests \ account \ update等。PHP指定不同目錄中腳本的固定包含源

但是,一個煩人的問題是我必須指定一組通用包含的路徑。我必須使用這樣的包括:

include_once ("../../../../autoload.php"); 
include_once ("../../../../init.php"); 

tests \ accounts \中的測試用例需要更改爲包含(少一個目錄級別下)。無論如何,讓他們以某種方式定位我的兩個常見包含?我知道我可以在我的PHP配置中設置包含路徑,或使用服務器環境變量,但是我想避免這樣的解決方案,因爲它們使應用程序的可移植性降低,並且與程序員無法控制的另一層(某些Web主機不允許的PHP配置設置的配置,例如)

回答

4

你可以嘗試在php.ini中使用 「的include_path」 或PHP中使用該功能通過set_include_path http://php.net/manual/en/function.set-include-path.php

set_include_path('/home/www/...'); 

set_include_path('../../../'); 

也,你犯了一個常數全局文件,然後

define('DIR_PATH', '../../'); 
include_once(DIR_PATH . 'file'); 

因爲「通過set_include_path」心不是那麼有效。

希望我幫助

+0

我將不得不爲每一個我的單元測試用例的文件這樣做,是因爲文件被放置在不同的目錄層次,相對路徑也將從文件改變文件 – Extrakun 2010-06-12 07:52:29

2

爲什麼不直接定義一個變量

$includePath = "/unittests/include/"; 

然後

include_once ($includePath."something.php"); 
+0

我將不得不爲我的單元測試案例文件 – Extrakun 2010-06-12 07:51:47

+0

@Extrakun做到這一點:好吧,它更容易編寫所有的'../../../'... 如果你不想要在PHP配置中更改包含路徑我沒有看到任何其他選項。你可以讓所有的單元測試從同一頁面產生,所以變量只能被定義一次。 – nico 2010-06-12 07:55:30

+0

也如果你使用絕對路徑,它將永遠是一樣的,所以你不會每次都改變它。 – nico 2010-06-12 08:03:39

0

,因爲這些文件被放置在 不同的目錄層次中, 相對路徑也將從文件 到文件

這就是爲什麼絕對路徑總是被認爲更好。

include $_SERVER['DOCUMENT_ROOT']."/../config/init.php"; 

是足夠的大部分時間

相關問題