PHP 中的 __DIR__ 和 dirname(__FILE__) 有什么区别吗?

php
2022-08-30 06:59:33

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

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


答案 1

它们的结果完全相同;所以,这没有什么区别。


例如,以下两行:

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__(或者,应该)更快。


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

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


答案 2

推荐