2012-06-01 42 views
1

這很簡單,但非常混亂的大部分時間..PHP包括/需要的路徑規範格式

我需要知道這意味着什麼用,當我們包括文件由下面的模式(其中我在很多地方都看到可能還有更多)

這是什麼意思?

"./path" 

"/path" 

"../path" 

dirname(__FILE__) 

basename(dirname(dirname(__FILE__))); 

require dirname(__FILE__) . DIRECTORY_SEPARATOR; 

pathinfo() 

define('BASE_PATH',realpath('.')); 

define('BASE_URL', dirname($_SERVER["SCRIPT_NAME"])); 

回答

2

「./path」

的點指的是工作目錄。這是在命令行上鍵入「pwd」時打印的目錄。這可能是腳本本身的目錄,或者是首先運行的腳本的目錄,但並非總是如此。

「/路徑」

路徑以斜槓開始是相對於頂級目錄。這通常是服務器的根目錄,但它也可以是掛載點,用戶目錄或Web根目錄,具體取決於服務器的配置方式。

「../path」

「..」 指的是一個水平之上工作目錄的目錄。所以,如果工作目錄是/ foo /酒吧則 「..」 是 「/ foo」 和 「../path」 指的是 「/富/路徑」

目錄名(__ FILE__)

dirname()「返回父目錄的路徑。」 __FILE__是一個魔術常數,指的是使用它的文件的完整路徑。所以如果你在/foo/bar/baz/file.php有一個腳本,__FILE__將是「/foo/bar/baz/file.php」,dirname(__ FILE__)將是「/ foo/bar/baz」

basename(dirname(dirname(__ FILE__)));

basename()「返回路徑的結尾名稱組件」。同樣的規則適用於dirname(),因此前面示例中的dirname(__ FILE__)是「/ foo/bar/baz」dirname(dirname(__ FILE__))將是「/ foo/bar」。該路徑的尾部組件是「bar」,所以對於這個__FILE__,basename(dirname(dirname(__ FILE__)))將是「bar」。

需要dirname(__ FILE__)。 DIRECTORY_SEPARATOR;

DIRECTORY_SEPARATOR是一個我不知道的常量,但顯然它是在文件系統擴展中定義的。如果__FILE__是「/foo/bar/baz/file.php」,那麼路徑就是「/ foo/bar/baz /」。所以這個聲明似乎是不完整的。 require()就像include(),只是如果找不到該文件,它會發出錯誤。路徑永遠不會引用文件,所以這個聲明沒有多大意義。

PATHINFO()

PATHINFO()分析的路徑。將它傳遞給一個路徑,它將給出一個包含dirname,basename,擴展名和文件名鍵以及解析路徑的相應部分的關聯數組。

define('BASE_PATH',realpath('。'));

realpath()將採用相對路徑並將其變形爲絕對路徑。如前所述,「。」指的是工作目錄,如果是「/ foo/bar/baz」,則realpath(「。」)將返回「/ foo/bar/baz」。 define()將會產生一個常量,所以這會將BASE_PATH常量設置爲腳本的工作目錄。如果工作目錄在腳本過程中發生變化,或者如果您在子目錄中包含文件,則可以使用常量來引用Web應用程序的頂層。

define('BASE_URL',dirname($ _ SERVER [「SCRIPT_NAME」]));

同樣處理與定義()和目錄名()。這裏的新東西是$ _SERVER [「SCRIPT_NAME」]。如果腳本是從加載地址是example.com/foo/file.php那麼這將是「/foo/file.php」和目錄名()的是「/ foo」的。設置這個常量可能對Web應用程序中的頁面互相引用很有用。