在 PHP 中,如果我在调用文件时使用 ./(点斜杠)与不使用文件有什么区别


in PHP what is the difference if i use ./ (dot slash) when calling a file compared to not using it

如果我在 PHP 或任何编程语言中调用类文件时使用 ./会影响应用程序的性能。

示例是:包括"./include/functions.php";

反对:包括"包含/功能.php";

写下你的意思。

./foo 表示foo在当前目录中
foo表示foo当前目录或包含路径中的任何目录中

这是一个重要的意义差异,性能无关紧要,可以忽略不计。如果当前目录中存在foo,则不会有任何区别。

php 文档 on include

如果定义了路径 - 无论是绝对路径(在Windows上以驱动器号或''开头,在Unix/Linux系统上以/开头)还是相对于当前目录(以.或..开头),则include_path将被完全忽略。例如,如果文件名以 .. 开头。/,解析器将在父目录中查找请求的文件。

在核心PHP.ini指令的描述中提到,

在包含路径中使用 . 允许相对包含,因为它表示当前目录。但是,显式使用 include './file' 比让 PHP 始终检查当前目录中的每个包含更有效。

但话又说回来,你不会经常打电话给include。 性能开销可以忽略不计,对您的应用程序并不重要。 正如高德纳所说:"过早优化是万恶之源"

由于您使用的字符串的长度,速度差异微不足道。就样式而言,使用"./"意味着您有意表示相对文件名,并且没有意外错过前导斜杠。

我认为

没有太大区别。两者都产生相同的操作码,路径解析是在 PHP 核心中优化良好的 C 函数或(非常)优化的 C 系统调用中完成的。即使有差异,也不会影响您的整体性能,因为您很少require数十万个文件......

编辑:我刚刚运行了一些测试(包括10,000个文件),绝对没有区别,除了:

  • ./libdir/file.php会寻找当前文件夹中的文件
  • libdir/file.php会寻找文件在当前文件夹和$PATH

两者的意思相同。如果在解析它的PHP文件IO系统中存在差异,那么它应该是完全最小的,并且仅在大型基准测试中可见。你可以试试,但我怀疑差异会很大。