为了账号安全,请及时绑定邮箱和手机立即绑定

include引入一个页面的时候非要用dirname(__FILE__) ?为什么呢?

include引入一个页面的时候非要用dirname(__FILE__) ?为什么呢?

千万里不及你 2021-06-22 19:15:15
php include引入一个页面的时候为什么非得用dirname(__FILE__) ??用 “../” 来到上一级或上2级 不行吗??有区别吗?? 看那么多包含 好费事的- -。。高手帮我解答下...我想知道 有什么好、坏的之处 有啥区别, 还是个人习惯
查看完整描述

2 回答

?
茅侃侃

TA贡献1842条经验 获得超21个赞

dirname() 函数返回路径中的目录部分。
dirname(__FILE__) 取到的是当前文件所在的绝对目录
../ 这里是上一级目录
如果是 ./ 则是同级目录
举个例子:
假设,现在的文件目录是 D:\www\yoursite\test.php
那么dirname(__FILE__) 就是D:\www\yoursite
dirname(__FILE__).'/../‘ 这里就是 D:\www\yoursite/../ 实际上就是路径D:\www
dirname(__FILE__).'/../popup.php' 实际上就是路径 D:\www\popup.php

查看完整回答
反对 回复 2021-06-27
?
MMTTMM

TA贡献1869条经验 获得超4个赞

“../”适合于简单的一个文件包含于另一个文件。
而dirname(__FILE__) 大多适合多层,更复杂多多文件包含,维护起来更容易。

如果仅仅是a.php文件包含b.php文件,可以直接用 include的dirname(__FILE__)或者 “../” 均可,一般不会出错的。
但往往是 a包含了 b文件,另外c.php包含了a文件
那么使用 “../” 的话,就会造成c包含a时再载入b文件时路径出错,而使用dirname(__FILE__)时,c包含a时会以dirname(__FILE__)映射出c和a的路径关系,a再到包含b文件时,使用dirname(__FILE__),会映射出a和b的相应目录关系。这个就不会造成不同目录多次包含时路径出错!

注意 __FILE__,代表 这个代码所在文件的文件名, 比如 c用dirname(__FILE__)包含a,那么 __FILE__代码是c文件,而c包含a后,a再用dirname(__FILE__)包含到b时,那么__FILE__在执行时就是a文件,这个依次类推,文件的包含及路径永远也不会出错!



查看完整回答
反对 回复 2021-06-27
  • 2 回答
  • 0 关注
  • 460 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信