社区
基础编程
帖子详情
如何解决多重包含的问题?
wjjchen
2004-12-03 02:00:26
一个文件include其他文件,而他本身又有可能被其他不同目录的文件所include,如果使用相对路径就会出错,绝对路径又因为程序可能会放在不同的目录中,这是该怎么解决阿?使用$_SERVER['DOCUMENT_ROOT']也是不行的,因为程序不一定就放在$_SERVER['DOCUMENT_ROOT']的根目录下。
...全文
269
11
打赏
收藏
如何解决多重包含的问题?
一个文件include其他文件,而他本身又有可能被其他不同目录的文件所include,如果使用相对路径就会出错,绝对路径又因为程序可能会放在不同的目录中,这是该怎么解决阿?使用$_SERVER['DOCUMENT_ROOT']也是不行的,因为程序不一定就放在$_SERVER['DOCUMENT_ROOT']的根目录下。
复制链接
扫一扫
分享
举报
写回复
配置赞助广告
用AI写文章
11 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
ice_berg16
2004-12-04
打赏
举报
回复
会阿,比如说目录结构是:
/class/class1.inc.php
/db/db1.inc.php
/test.php
class1.inc.php 中include(dirname(__FILE__)."/../db/db1.inc.php"),
test.php中:include(dirname(__FILE__)."/class/class1.inc.php"),
使用dir(__FILE__)来取得当前文件的绝对路径,再根据当前文件的路径进行包含
-神仙-
2004-12-03
打赏
举报
回复
include("./class/class1.inc.php"),
改成
include("class/class1.inc.php"),
可以吗
hflsj
2004-12-03
打赏
举报
回复
顶一下
wjjchen
2004-12-03
打赏
举报
回复
我也只是举个这样的例子而已,不一定就是类中的问题啊。
xuzuning
2004-12-03
打赏
举报
回复
这只能说是你的文件组织有问题
1、
/db/db1.inc.php
应该也是类,同样应放在/class中
引用时只需include 'db1.inc.php';
2、在类中嵌入与类本身没多大关系的文件是不可取的,这使得类失去通用性
如果/class/class1.inc.php中确实需要/db/db1.inc.php
也应该在test.php中
include 'db/db1.inc.php';
include 'class/class1.inc.php';
Rekcuf
2004-12-03
打赏
举报
回复
要说加一个目录转换或者一个目录定义都麻烦,就没辙啦。
要说你的目录组织得好,就不会出现太多这种嵌套啦。GOOD LUCK。
wjjchen
2004-12-03
打赏
举报
回复
楼上的虽然说可以解决问题,可是在每个页面都这样是不是有点麻烦啊?如果是这样我在每个页面定义一个常量WWW_ROOT,以后包含文件的时候就用include(WWW_ROOT."/db/db1.inc.php")也可以解决问题,就是觉得这样解决有点麻烦。
Rekcuf
2004-12-03
打赏
举报
回复
楼上两位都没有理解他的意思:
以下是目录树:
./
|- index.php (需要 ./classes/HelloWorld.class.php 和 ./includes/global.php)
|- ./classes
|- HelloWorld.class.php
|- DBMySQL.class.php
|- ./includes
|- global.php (而在这里又 include 了 ./classes/DBMySQL.class.php)
那么 index.php 里面:
<?php
include("./global.php");
?>
而 global.php 里面:
<?php
// include("./../classes/DBMySQL.class.php"); !! 这里出错,因为当 global.php 被 include 到 index.php 的时候,所在的目录是根目录(./),所以此时所指的(./../classes)就是上层目录了。不行
include("./classes/DBMySQL.class.php"); // 这样就可以了。
?>
但是你说到的其他目录引用 global.php 的时候,就出错是不是?
例如有个 ./admin/admin.php 要 include 这个 global.php,所以你要更改当前目录。
<?php
//: admin/admin.php
chdir('./../'); // 转到上层目录,此时跟 index.php 引用 global.php 一样,不会混淆。
include('./include/global.php'); // 这里能看清楚吧?
//:~
?>
wjjchen
2004-12-03
打赏
举报
回复
会阿,比如说目录结构是:
/class/class1.inc.php
/db/db1.inc.php
/test.php
class1.inc.php有这样的语句:include("../db/db1.inc.php"),执行class1.inc.php是没有错的。
test.php有这样的语句:include("./class/class1.inc.php"),这时候执行test.php就会出现找不到db1.inc.php的错误阿。
szjq
2004-12-03
打赏
举报
回复
用include_once
butcher2002
2004-12-03
打赏
举报
回复
应该不会出现你说的情况
include实际上相当于在此位置添加了include指定的文件内容
“error LNK1169: 找到一个或多个
多重
定义的符号”的
解决
方法
http://www.cnblogs.com/A-Song/archive/2012/03/23/2413782.html
问题
描述如下: 有 三个源文件,A.h、B.cpp、C.cpp。 A.h是头文件,其中声明了三个变量a1、a2、 a3。 B.cpp是A.h中所声明的类的实现源代码,C.cpp是主程序文件。B.cpp和C.cpp中均
包含
头文件 A.h。
gcc 提示conflicting types 之避免头文件重复
包含
摘要:在编写程序的过程中,往往出现这样的情况。main.c需要
包含
A.h和B.h,而A.h&&B.h同时
包含
C.h,此时就出现
问题
了,C.h文件被同时
包含
了两次。如果其中含有某种类型的定义,必然在编译的时候引发错误:conflicting types #include文件的一个不利之处在于一个头文件可能会被多次
包含
,为了说明这种错误,考虑下面的代码: #include "x.
“error LNK1169: 找到一个或多个
多重
定义的符号”的
解决
方法(转载)
问题
描述如下: 有 三个源文件,A.h、B.cpp、C.cpp。 A.h是头文件,其中声明了三个变量a1、a2、 a3。 B.cpp是A.h中所声明的类的实现源代码,C.cpp是主程序文件。B.cpp和C.cpp中均
包含
头文件 A.h。 在编译时,编译能够通过,但链接时出了
问题
,出现”error LNK1169: 找到一个或多个
多重
定义的符号“的错误。 经过分析,确定了这
基础编程
21,889
社区成员
140,329
社区内容
发帖
与我相关
我的任务
基础编程
从PHP安装配置,PHP入门,PHP基础到PHP应用
复制链接
扫一扫
分享
社区描述
从PHP安装配置,PHP入门,PHP基础到PHP应用
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章