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

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

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

他们的结果是完全一样的 ; 所以,没有什么区别。

例如,以下两行:

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

两者会给出相同的输出:

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

但是,至less有两点区别:

  • __DIR__仅在PHP> = 5.3时存在
    • 这就是dirname(__FILE__)被广泛使用的原因
  • __DIR__是在编译时计算的,而dirname(__FILE__)是指函数调用,在执行时被评估
    • 所以, __DIR__(或者应该)更快。

作为参考,请参阅手册的魔术常数部分(引用)

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