在 PHP 中__ DIR__ 和 dirname (__FILE__)有什么区别吗?

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

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

67988 次浏览

他们的结果是完全相同的 ; 因此,在这一点上没有区别。


例如,下面两行:

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

将给出相同的输出:

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


但至少有两点不同:

  • __DIR__ 只存在于 < strong > PHP > = 5.3的情况下
    • 这就是为什么 dirname(__FILE__)被广泛使用的原因
  • __DIR__ 在编译时计算,而 dirname(__FILE__)表示函数调用,在执行时计算
    • 所以 __DIR__(或者,应该是)快。


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

__DIR__: 文件的目录。
如果在包含内使用,则 所包含文件的目录为 返回。 < br > 这相当于 这个 目录名没有 尾部斜杠,除非它是根 目录。 < br > (在 PHP 5.3.0中添加)