2013-12-13 49 views
0

我有幾個php包含在我的一些頁面(通常的事情,如頁腳標記和標題等)和Id,而不是使用../../相對路徑,我正在使用一個絕對的PHP路徑。PHP包含文件作爲絕對路徑 - 這是正確的嗎?

我想這會工作:

<?php include 
include(dirname(__FILE__) . "/dir/script_name.php"); 
?> 
  • 我的問題是:是/dir/script_name.php - 確切的完整路徑,如果是這樣,什麼是__FILE__ ?

函數dirname()從路徑中刪除文件名並給出文件所在目錄的絕對路徑 - 對嗎?那麼,爲什麼要打擾函數dirname(),如果我已經給出了完整的路徑 - ?

希望是有道理的

回答

0

__FILE__是PHP magic variable這是當前正在執行的文件(其中出現)的完整路徑,dirname()從它刪除的文件名,從而讓您的文件夾的完整路徑當前腳本是英寸

這其實只是一個黑客,另一個魔術變量__DIR__(當前執行腳本的目錄)僅在5.3加入,因此dirname(__FILE__)是要實現同樣的事情在最簡單的方法早期版本。

+0

這是一個神奇的常量,不是去超級全球 –

0

函數dirname()從路徑中刪除文件名並給出了文件所在目錄的絕對路徑 - 對吧?

是的,這是正確的。您可以使用的路徑可以是相對路徑或完整的系統路徑。

那麼爲什麼要打擾函數dirname()如果我已經給完整的路徑 - ?

如果您對整個文件系統路徑進行了硬編碼,那麼您的應用程序將變得不便攜;你的webroot目錄與我的不同。這通常就是爲什麼你會看到這樣生成路徑的代碼。

我個人認爲PHP autoloader是一個更靈活的管理類包含的替代方案。

+0

確定...感謝,所以,我在想,有一個包含完整路徑單一的PHP文件和我要提到糾正那個很好 - 有點像.css和樣式表? – henry

+0

對不起,我不確定你的意思是「一個包含完整路徑的.php文件」? – AlexP

0

這一切都取決於你想要的。從最嚴格的意義上講,您所描述的路徑與您正在執行的文件「相對」。要獲得真正的絕對路徑,只需確保文件名以「/」開頭。 像這樣:

include "/path/to/file/script.php"; 
相關問題