PHP--关于require_once,require,include,include_once讨论

PHP中相对路径和绝对路径问题,困扰了我很长时间。花了一些功夫终于搞明白了,原来PHP中的相对路径概念与其他系统的相对路径是完全不同的概念。PHP中相对路径的参考目标是程序的入口文件,一般如index.php。那现在问题就来了,如何既能保证程序的易理解性,又能使程序顺利的移植到其他路径或者服务器目录下?

那就得用到__FILE__这个神奇的魔术常量,为什么说它是魔术呢?因为它会随着所在文件位置的变化而改变。太神奇了。

那看看具体的操作吧(原文来自:http://www.cppblog.com/biao/archive/2010/09/10/126279.aspx

php包含需要注意:
目录结构
xxxxx
    |--a.php
    |--util.php
    |--yyyy
           |--b.php
----------------------------------------------------------------
a.php
<?php
reqiure_once("yyyy/b.php");
?>
----------------------------------------------------------------
b.php
<?php
reqiure_once("../util.php");
?>

运行a.php会出错,因为这时说找不到util.php,因为他包含了b.php,相当于直接把b.php的内容复制到a.php中,即最后a.php的内容为:
<?php
reqiure_once("../util.php");
?>
所以出错了。
如果能直接用绝对路径来表示的话,当然不会出错,但是换目录了呢?
可以使用__FILE__来动态的取得php文件的绝对路径
__FILE__ always equals to the real path of php script whether it is included.
__FILE__ 返回的是php文件绝对路径,在被其他文件包含前就被执行了.
使用__FILE__来解决包含问题:
a.php
<?php
reqiure_once(dirname(__FILE__) . "/yyyy/b.php");
?>
----------------------------------------------------------------
b.php
<?php
require_once(dirname(__FILE__) . "/../util.php");
?>

dirname(__FILE__)没有返回 /, 虽然代码长了点,但是很好的解决了问题。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值