PHP获取绝对路径dirname(__FILE__)和__DIR__比较
我们都知道,要获取当前PHP脚本所在目录的绝对路径,dirname(__FILE__)和 __DIR__都可以实现。那么什么情况下用 dirname(__FILE__),什么情况下用__DIR__呢?它们之间有什么区别?
功能和效率
dirname(__FILE__)由两部分组成,__FILE__魔术变量和dirname()函数。__FILE__是当前脚本的绝对路径,通过dirname()函数后,就可以获得脚本所在目录的绝对路径。
举个栗子,有个hello.php文件,其部署在服务器的目录是:/home/www/website/hello.php
那么,
- __FILE__的值就是:/home/www/website/hello.php
- dirname(__FILE__)返回就是:/home/www/website/
如果我们在hello.php用__DIR__全局变量,就可以直接获得所在目录的绝对路径:/home/www/website/,和 dirname(__FILE__)效果完全一样。
在实现同样功能的情况下,dirname(__FILE__)多了一层函数调用。所以,__DIR__比 dirname(__FILE__)在效率上有优势。
PHP版本支持
__FILE__和 dirname()函数从PHP4.0.2就开始启用。
__DIR__变量则是PHP5.3.0新增的。
所以,如果你的PHP版本大于等于PHP5.3.0,建议使用__DIR__。否则,最好还是用 dirname(__FILE__),以确保程序不会出错。
参考资料
- PHP魔术常量
- Isthereanydifferencebetween__DIR__anddirname(__FILE__)inPHP?
- dirname(__FILE__)vs__DIR__inPHP