PHP获取绝对路径dirname(__FILE__)和__DIR__比较

211 阅读1分钟

目录

我们都知道,要获取当前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() 函数从 PHP 4.0.2 就开始启用。

DIR 变量则是 PHP5.3.0 新增的。

所以,如果你的PHP版本大于等于PHP5.3.0,建议使用 DIR。否则,最好还是用 dirname(FILE),以确保程序不会出错。

参考资料

  1. PHP魔术常量
  2. Is there any difference between DIR and dirname(FILE) in PHP?
  3. dirname(FILE) vs DIR in PHP