php文件包含问题(求助)

hphper 发布于 2013/04/23 21:02
阅读 505
收藏 1
PHP

我文件夹结构如图:

inc1.php

<?php
echo "inc1.php";
echo "<br/>";
?>
inc2.php

<?php
include "../inc1.php";
echo "inc2.php";
echo "<br/>";
?>
inc3.php

<?php
include "../inc2.php";
echo "inc3.php";
?>

我在用inc3.php包含inc2.php时,由于inc2.php里包含inc.php的代码是../inc1.php直接拷贝到了inc3.php

怎么能让inc3.php包含inc2.php时自动把../inc1.php包含自动处理下呢?

我不想用php_include_path

加载中
0
红星xx
红星xx

估计还是路径问题 。

假如 入口是 inc1.php ,

在里面写上 dirname(__FILE__) ,获取本文件 路径 ,再 基于 dirname(__FILE__) 文件位置各种位于 。

hphper
hphper
那为何inc1.php里的dirname(__FILE__) 被包含到inc2.php里了后值还是与在inc1.php里的值一样啊,它为何不是硬生生的拷贝到inc2.php里的那种效果呢? 是不是只有目录包含是硬生生的拷贝而与被包含的文件没多大关系呢?
0
泡不烂的凉粉
泡不烂的凉粉
魔法常量, __FILE__ 这些都是魔法常量。

还有一点需要注意, include 包含文件,如果是相对路径, 所相对的路径首先应该是按照默认当前路径查找文件, 其次才是 include_path 路径。 php文件在web服务器下运行到的效果并非和期望的一样。虽然默认路径大多时候是web服务器请求路径。但这些不是绝对的, 环境很可能被欺骗,进而破坏程序预期的执行方式。

getcwd(); 每个文件中输出这个结果。看看当前路径和相对路径的关系应该能理解。
所以能用绝对路径就尽量避免使用相对路径比较好。

0
hylent
hylent
用绝对路径
0
酒逍遥
酒逍遥

楼上 都没懂 楼主的意思..

楼主的意思 是  

现在 inc 2  的代码里包含了 inc 1 文件

然后现在需要用 inc 3 去包含 inc 2, 但是 inc 1里的代码 在 inc 3里已经有了.

所以inc 3在包含 inc 2 的时候 需要自动 让 inc 2 不再包含 inc 1

这个比较难办了.只能修改inc 2 检测一下是否被 inc 3 包含..如果是则不包含 inc 1

否则就包含 inc 1

可以用get_included_files 来检测

酒逍遥
酒逍遥
回复 @Tuesday : include_once 没用的.因为他是把inc1 里的代码复制到inc3 里了.比如 inc1 里定义了一个函数. 复制到inc3 里. inc3 包含inc2 ,inc2又包含inc1那么php就会报错函数重复定义了.即使用include_once也没用的
Tuesday
Tuesday
include_once() 笑而不语.
返回顶部
顶部