0

__DIR__我最近在解决有关在包含脚本包含脚本的问题时遇到了魔法常数。

在做了一些阅读之后,我找不到任何理由不使用__DIR__requireorinclude语句中的每条路径添加前缀。

__DIR__ . '/path/to/script.php'所以我的问题是 -与使用相对路径相比,使用时是否有任何已知的缺点/潜在的副作用需要注意?

谢谢。

4

1 回答 1

3

PHP 有两种包含文件的模式:基于相对路径和基于绝对路径:

require 'foo/bar.php';
require '/var/www/foo/bar.php';

使用相对路径时,查找是基于 PHP包含路径执行的,它基本上是 PHP 将查找的目录列表,类似于 UNIX$PATH环境变量。如果您使用PEAR或其他将 PHP 模块和文件安装在某些外部目录中的模块安装程序,那么使用该机制来定位和包含外部模块是非常有意义的。您甚至可以在您自己的应用程序中使用该机制来处理文件。在服务器上部署应用程序时,它可以让您有更多的余地来决定确切的文件位置。

然而,在实践中,这不知何故变得相当烦人,并且在尝试使用该系统时会遇到各种问题。尤其是因为 PEAR 和 PECL 并不是特别流行,而Composer是当今 PHP 中管理依赖项的事实上的机制。因此,相对路径包含机制几乎已死,您应该使用绝对路径,这__DIR__确实是必须的。

于 2018-01-26T11:01:18.210 回答