php中include包含文件路徑查找過程


首先,“路徑”分為三種:

1、絕對路徑,以/開頭(unix系統)或c:等盤符開頭(windows系統)。

2、相對路徑,以.開頭,有./(當前目錄)和../(上級目錄)。

3、其他路徑,不是絕對路徑和相對路徑,直接以目錄或文件名開頭的路徑,如include('whatever.php')。

 

----------------------------------------------------------有沒有那么一首歌---------------------------------------------------------------

根據路徑的不同,查找包含文件的過程也會不同,具體為:

1、首先記住,如果include中的路徑是絕對路徑或者相對路徑,查找是不經過include_path的。

2、如果include中的路徑是絕對路徑,查找過程不需要借助其他任何條件,文件直接確定。這也是最不易出錯的包含文件的方法,所以很多應用程序都會有類似下面的代碼:

define('APP_PATH',realpath(dirname(__FILE__)));
define('DS',DIRECTORY_SEPARATOR);

require(APP_PATH.DS.'common'.DS.'common.inc');

3、如果include中的路徑是相對路徑,肯定就得有個參路徑,此處的參照路徑為CWD(當前工作目錄)。

什么是CWD?分兩種情況:

  a)如果php程序是在命令行下執行的,那CWD就是你當前所在的位置。(這樣就會出現在不同的目錄下執行同一個php文件,有的能正確執行,有的報包含錯誤)

  b)如果是web服務器執行的php頁面,那CWD就是入口php文件所在的目錄。比如http://localhost/try.php的話就是try.php這個文件所在目錄。這個時候 try.php包含的文件,以及被包含文件再次包含的文件,查找時的參照路徑都是try.php所在的目錄。

4、如果include中的路徑是其他路徑,那么php會遍歷include_path中的每一個目錄,並將其與include中的內容拼起來組成一個相對或絕對路徑,再按生成路徑的查找規則查找文件,如果查找到則查找過程結束,如果遍歷完整個include_path也沒能查找到文件,最后還會include所在文件的文件路徑跟include內容拼起來,進行一次查找。從這也能看出用其他路徑的include是效率最低的。(這也是為什么很多資料上提到include('./try.php')比include('try.php')效率高的原因。)

 

最后,為了易用,效率,為了祖國,為了人民,強烈推薦2中的方法包含文件。

以上都是經過自己測試以后得出的結論,有不對的地方歡迎指正!!!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM