__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__)));定义当前文件路径