php

PHP中魔术常量__DIR__

2023-09-21

截止到PHP7.4,通过官方手册查知,目前PHP一共有八个魔术常量,分别为:__LINE__,__FILE__,__DIR__,__FUNCTION__,__CLASS__,__TRAIT__,__METHOD__,__NAMESPACE__。


__DIR__ 是其中用的比较频繁的一个,含义为:文件所在的目录(如果用在被包括文件中,则返回被包括的文件所在的目录。它等价于 dirname(__FILE__) 。除非是根目录,否则目录中名不包括末尾的斜杠。),说的直白一点就是,它返回的是:这个常量所在的文件的绝对路径。

单独看定义可能不是很好理解,下面举两个例子进行说明,假设使用windows操作系统,已部署好站点在c:\wwwroot\目录。


示例1: 在网站根目录有  1.php,访问/1.php时:

在1.php输入 var_dump(__DIR__),则输出为: C:\wwwroot


示例2: 在网站根目录有1.php,另有文件夹a,在a下面有b.php,在1.php包含了访问a/b.php时:

在b.php输入 var_dump(__DIR__),则输出为: C:\wwwroot\a


另: 使用 dirname($_SERVER['SCRIPT_FILENAME']) 也可以获取文件目录,不过$_SERVER['SCRIPT_FILENAME']返回的是访问文件的路径,即上面两个示例都会返回C:/wwwroot/1.php,注意在windows系统下返回的路径分隔符也有区别。