在$ absolutePath = realpath(__ DIR__)中,"realpath"是多余的吗?__DIR__始终是典型的绝对路径吗?

Nay*_*est 8 php filesystems

做某事是不是一样

 $dir = realpath(dirname(__FILE__));
 // or for php 5.3+:
 $dir = realpath(__DIR__)
Run Code Online (Sandbox Code Playgroud)

或者像DIRFILE这样的魔术常量总是返回绝对路径,所以realpath是多余的?

Com*_*eek 9

你不需要realpath().

文件__FILE__:

文件的完整路径和文件名.如果在include中使用,则返回包含文件的名称.从PHP 4.0.2开始,__FILE__ 始终包含已解析符号链接的绝对路径,而在旧版本中,它在某些情况下包含相对路径.

所以__FILE__返回绝对路径=> realpath()不必要

如果您使用__DIR__:

该文件的目录.如果在include中使用,则返回包含文件的目录.这相当于dirname(__FILE__).除非它是根目录,否则此目录名称没有尾部斜杠.(在PHP 5.3.0中添加.)

__DIR__也返回绝对路径,因为dirname()不会切断__FILE__=> 不必要的路径的绝对部分realpath()

  • 请记住,在您使用生成的`__DIR__`或`__FILE__`作为URI的前缀的情况下,`realpath`仍然很有用.例如`$ include = realpath(__ DIR__.'/ path/to/file');`但是,答案描述仅使用带有`__FILE__`或`__DIR__`的realpath是多余的. (2认同)