使用 __DIR__ 的缺点

Downsides to using __DIR__

我最近在解决关于包含脚本 within 包含脚本的问题时遇到了魔法常量 __DIR__

阅读之后,我找不到任何理由不使用 __DIR__ 作为 requireinclude 语句中每个路径的前缀。

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

谢谢。

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

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

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

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