PHP 中的 __FILE__ 和__DIR__常量


 

__DIR__ :當前內容寫在哪個文件就顯示這個文件目錄

__FILE__ : 當前內容寫在哪個文件就顯示這個文件目錄+文件名

 


比如文件 b.php 包含如下內容: 
<?php 
$basedir = dirname(__FILE__); 
?> 
如果b.php被其他目錄里的a.php文件require 或者 include 去引用的話。 
變量$basedir 的內容還是b.php所在的那個文件夾的路徑。 
而不是變成a.php文件所在的目錄。 
dirname(__FILE__) 一般會返回文件所的當前目錄到系統根目錄的一個目錄結構。 
不會返回當前的文件名稱。 
dirname(__FILE__) 也可能返回一個 . (當前目錄) 
[原因是 b.php 文件在 http.conf 或者 PHP 配置開發環境的默認WEB目錄下. 
比如 WEB_ROOT 為: "C:/root/www/".] 
b.php文件路徑為: "C:/root/www/b.php". 

使用方法提示,  
如果重復一次可以把目錄往上提升一個層次: 
比如:$d = dirname(dirname(__FILE__)); 
其實就是把一個目錄給dirname()做參數了.因為dirname()返回最后的目錄不帶\\或者是/ 
所以重復使用的時候可以認為 dirname() 把最下層的目錄當成文件名來處理了.照常返回 
當前目錄的上級目錄.這樣重復就得到了它的上一級的目錄. 

包含得到上一級目錄的文件 
include(dirname(__FILE__).'/../filename.php'); 

此行代碼也等價於如下:

include(dirname(dirname(__FILE__)).'/filename.php'

 

dirname(__FILE__)等價於  __DIR__ 

在實現同樣功能的情況下,dirname(__FILE__)多了一層函數調用。所以, __DIR__ 比 dirname(__FILE__) 在效率上有優勢

 

__FILE__ 和 dirname() 函數從 PHP 4.0.2 就開始啟用。

__DIR__ 變量則是 PHP5.3.0 新增的。

所以,如果你的PHP版本大於等於PHP5.3.0,建議使用 __DIR__。否則,最好還是用 dirname(__FILE__),以確保程序不會出錯。

 

常見用法:

define('BASE_PATH',str_replace('\\','/',dirname(__FILE__)));定義當前文件路徑

 


免責聲明!

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



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