2014-05-06 45 views
0

我是一個相對較新的開發人員,正在處理我的第一個「大型」網站。爲了便於開發,我希望在我的項目中有一個持久目錄範圍。這就是我的意思是:如何在大型PHP項目中維護一致的目錄範圍?

說我有結構類似於以下(簡體)目錄:

Site Root/ 
    index.php 
    js/ 
    css/ 
    img/ 
    classes/ 
    includes/ 

,如果我在index.php我的工作,並希望include()Classes/一個文件,它很簡單:

include('classes/user.php'); 

,但是,如果我的內心深處,也就是說,包括文件夾,並希望包括一個類時,它就會變得混亂:

include('../../../classes/user.php'); 

理想情況下,我希望能夠從任何文件中說include('classes/user.php');

我可以採取哪些措施使我的目錄結構儘可能簡單地被訪問?我正在考慮包含在每一個存儲相對於當前目錄的根目錄並將其保存爲字符串的頁面上的某種包含,但我不確定最好的方式是做什麼。

編輯:不確定爲什麼這被標記爲「太寬」?我想,我問的是非常具體的,但請賜教,如果不是這種情況..

回答

0

首先,總是試圖給我們的__DIR__magic constant使用includes()requires()時候,因爲缺乏它有時導致錯誤,並且可以使查找錯誤腳本變得更容易一些。

至於調用腳本,你應該使用根路徑的常量。像這樣:

// Value is something like '/var/www' 
define('PATH_BASE', __DIR__, 1); 
// Value is '/var/www/system/' 
define('PATH_SYS', PATH_BASE.'/system/', 1); 
// Value is '/var/www/assets/css/' 
define('PATH_CSS', PATH_BASE.'/assets/css/', 1); 
// Value is '/var/www/assets/js/' 
define('PATH_JS', PATH_BASE.'/assets/js/', 1); 

// Will always get '/var/www/system/core.php' no matter where it is called 
require (PATH_SYS.'core.php'); 

這可能是最簡單和最有效的方法,但遠不是唯一的方法。請記住,__DIR__使用它從中調用的文件的基路徑,而不是請求的文件。因此,如果請求的文件是「http://example.com/index.php」(又名'/var/www/index.php'),但在'/var/www/system/core.php'中調用__DIR__; __DIR__的值將是'/ var/www/system'