PHP中的__DIR__和dirname(__ FILE__)之间有什么区别吗?

时间:2010-05-01 09:25:58

标签: php

对我来说看起来一样,但我不确定,

因为有很多项目使用dirname(__FILE__)

1 个答案:

答案 0 :(得分:178)

他们的结果完全相同;所以,没有区别。


例如,以下两行:

var_dump(dirname(__FILE__));
var_dump(__DIR__);

两者都会给出相同的输出:

string '/home/squale/developpement/tests/temp' (length=37)


但是,至少存在两个不同之处:

  • __DIR__ 仅存在 PHP> = 5.3
    • 这就是 dirname(__FILE__) 被更广泛使用的原因
  • __DIR__ 在编译时进行评估,而 dirname(__FILE__) 表示函数调用,并在执行时进行评估
    • 因此, __DIR__ (或应该)更快。


作为参考,请参阅手册(引用)的Magic constants部分

  

__DIR__:文件的目录。   
如果在包含内使用,则   包含文件的目录是   回。
这相当于   dirname(__FILE__)
这   目录名称没有   除非它是根,否则尾部斜杠   目录。
(在PHP 5.3.0中添加。)