我见过这个:
<?php
include( dirname(__FILE__) . DIRECTORY_SEPARATOR . 'my_file.php');
?>
为什么我需要这样做?为什么我要麻烦地获取目录名,然后将其与目录分隔符和新文件名连接起来?
上面的代码不等于:
<?php
include( 'my_file.php' );
?>
??
PHP 文档 http://php.net/manual/en/function.include.php says,
根据给定的文件路径包含文件,如果未给出,则根据指定的 include_path 包含文件。如果在 include_path 中找不到该文件,include() 最终会检查调用脚本自己的目录以及失败之前的当前工作目录。如果 include() 构造找不到文件,它将发出警告;这与 require() 的行为不同,后者会发出致命错误。
假设我有一个(假的)目录结构,例如:
.../root/
/app
bootstrap.php
/scripts
something/
somescript.php
/public
index.php
现在假设bootstrap.php
包含一些用于设置数据库连接或其他类型的引导程序的代码。
假设您想将文件包含在boostrap.php
的文件夹名为init.php
。现在,为了避免扫描整个包含路径include 'init.php'
,你可以使用include './init.php'
.
但有一个问题。那./
将与包含的脚本相关bootstrap.php
, not bootstrap.php
。 (从技术上讲,它将相对于工作目录。)
dirname(__FILE__)
允许您获取绝对路径(从而避免包含路径搜索),而不依赖于工作目录是其中的目录bootstrap.php
居住。
(注意:从 PHP 5.3 开始,您可以使用__DIR__
代替dirname(__FILE__)
.)
现在,为什么不直接使用 include'init.php';
?
尽管一开始很奇怪,.
不保证位于包含路径中。有时为了避免无用stat()
当人们很少在同一目录中包含文件时,他们将其从包含路径中删除(当您知道包含永远不会存在时,为什么要搜索当前目录?)。
注意:这个答案的大约一半是在一篇相当旧的帖子中的地址:require(dirname(__FILE__).'/'.'myParent.php') 比 require('myParent.php') 更好吗? https://stackoverflow.com/questions/2220443/whats-better-of-requiredirname-file-myparent-php-than-just-require
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)