__DIR__ :當前內容寫在哪一個文件就顯示這個文件目錄php
__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'); ui
此行代碼也等價於以下:開發
include(dirname(dirname(__FILE__)).'/filename.php'效率
dirname(__FILE__)等價於 __DIR__ require
在實現一樣功能的狀況下,dirname(__FILE__)多了一層函數調用。因此, __DIR__ 比 dirname(__FILE__) 在效率上有優點。變量
__FILE__ 和 dirname() 函數從 PHP 4.0.2 就開始啓用。sed
__DIR__ 變量則是 PHP5.3.0 新增的。配置
因此,若是你的PHP版本大於等於PHP5.3.0,建議使用 __DIR__。不然,最好仍是用 dirname(__FILE__),以確保程序不會出錯。file
常見用法:
define('BASE_PATH',str_replace('\\','/',dirname(__FILE__)));定義當前文件路徑