您的位置:寻梦网首页编程乐园PHP 编程>dirname(__FILE__)是什么意思?
dirname(__FILE__)是什么意思?
作者:Luckynet  来源:原创

dirname是什么东西

dirname(string path)

dirname    (PHP 3, PHP 4, PHP 5)
dirname -- 返回路径中的目录部分
说明string dirname ( string path )
     给出一个包含有指向一个文件的全路径的字符串,本函数返回去掉文件名后的目录名。   
     在 Windows 中,斜线(/)和反斜线(\)都可以用作目录分隔符。在其它环境下是斜线(/)。   

                                                                              
例子 1. dirname() 例子
<?php
$path
= "/etc/passwd";
$file = dirname($path); // $file is set to "/etc"
?>

   
注:       在 PHP 4.0.3 中,dirname() 被修正为      POSIX 兼容。本质上就意味着如果在 path      中没有斜线,则返回一个点('.'),表示当前目录。否则返回的是把      path 中结尾的      /component(最后一个斜线以及后面部分)去掉之后的字符串。注意这意味着在老的函数返回一个空字符串的情形下你通常从      dirname() 得到的是斜线或者一个点。     

     dirname() 从 PHP 4.3.0 开始有所改变     请看以下例子:     
<?php

// PHP 4.3.0 以前
dirname('c:/'); // 返回 '.'

// PHP 4.3.0 以后
dirname('c:/'); // 返回 'c:'

?>

         dirname() 的操作从 PHP 5.0.0 版开始是二进制安全的。

那么,__FILE__ 又是什么呢?

php中定义了一个很有用的常数,即

__file__

这个内定常数是当前php程序的就是完整路径(路径+文件名)。

即使这个文件被其他文件引用(include或require),__file__始终是它所在文件的完整路径,而不是引用它的那个文件完整路径。

请看下面例子:
/home/data/demo/test/a.php


<?php
$
the_full_name=__FILE__;
$the_dir=dirname(__FILE__);
echo $the_full_name;  //返回/home/data/demo/test/a.php
echo $the_dir;            //返回/home/data/demo/test

?>

home/data/demo/b.php

<?hp include "test/a.php";
echo $the_full_name;  //返回/home/data/demo/
test/a.php 而不是/home/data/demo/b.php
echo $the_dir;            //返回/home/data/demo/
test  而不是/home/data/demo/
?>

简单地说:
      __FILE__     返回当前 路径+文件名
      dirname(__FILE__)  返回当前文件路径的 路径部分
      dirname(dirname(__FILE__));得到的是文件上一层目录名(不含最后一个“/”号)

例如,当前文件是 /home/data/demo/test.php  ,则
__FILE__ 得到的就是完整路径       即  /home/data/demo/test.php  ,而
dirname(__FILE__)得到路径部分   即  /home/data/demo     (后面没有“/”号)