include_path詳解


1.php默認的包含路徑為 .;C:\php\pear 即為當前目錄和C:\php\pear目錄


2.如果設置ini_set("include_path", "");  則改變為默認們目錄(即為上面的)

運行時的包含順序:

1.如果為絕對路徑  則直接包含, 並結束(找不到直接退出).

2.如果是是相對路徑((形如./file, ../dir/file)  則跳過include_path的作用邏輯, 直接解析相對路徑(找不到直接退出)

   注意:在使用相對路徑的包含文件的情況下,如果一個文件被另一個文件所包含,則這個文件的”相對“則指的是包含他的那個文件

3.都不是以上兩種情況

會根據include_path,和當前執行文件的path組成一個待選的目錄列表 (即先include path  再當前文件所在的目錄,注意:文件的真實目錄

然后, 依次從待選列表頭部開始, 根據PATH_SEPARATOR(windows下是”;”,linux下是":")取出待選列表中的一個路徑, 然后把要包含的文件名附加在這個路徑后面, 進行嘗試. 如果成功包含, 則返回(不在向下尋找), 否則繼續下一個待選路徑.

小結:

1. 因為使用include_path和相對路徑的情況下, 性能會和尋找的次數有關, 最壞的情況下, 如果你有10個include_path, 那么最多可能會重試11次才能找到要包含的文件, 所以, 在能使用絕對路徑的情況下最好使用絕對路徑.

 

2. 因為目錄相對路徑的basedir, 永遠都是當前工作路徑, 如果要使用, 需要和實際部署路徑相關, 所以實際使用的很少(當然, 也有借助chdir來完成的模塊).

 

3. 在模塊化的系統設計中, 一般應該在模塊內, 通過獲取模塊的部署路徑(dirname(__FILE__), php5.3以后更是提供了__DIR__常量)從而使用絕對路徑.

原文地址:http://www.laruence.com/2010/05/04/1450.html

 


免責聲明!

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



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