使用 __DIR__ 的缺点
Downsides to using __DIR__
我最近在解决关于包含脚本 within 包含脚本的问题时遇到了魔法常量 __DIR__
。
阅读之后,我找不到任何理由不使用 __DIR__
作为 require
或 include
语句中每个路径的前缀。
所以我的问题是 - 与使用相对路径相比,使用 __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__
确实是必须的。
我最近在解决关于包含脚本 within 包含脚本的问题时遇到了魔法常量 __DIR__
。
阅读之后,我找不到任何理由不使用 __DIR__
作为 require
或 include
语句中每个路径的前缀。
所以我的问题是 - 与使用相对路径相比,使用 __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__
确实是必须的。