关于PHP function内部include文件导致引用文件内部调用的类未初始化错误的问题,求高手解答。

1、我有一个common.php的内页文件,它调用了数据库已经实例化的数据库类conn.php;而且调用了功能函数库str.php。相关代码如下:include_once... 1、我有一个common.php的内页文件,它调用了数据库已经实例化的数据库类conn.php;而且调用了功能函数库str.php。相关代码如下:

include_once("common/conn.php"); //调用数据库文件类
include("common/str.php"); //调用功能函数库

//获取频道栏目信息
if(isset($_GET['p'])){
$p=$_GET['p'];
}else{
exit("系统出错");
}
layer_path('about','db'); //函数内容写在str.php文件内

2、layer_path() 函数的写法;
function layer_path($p,$DbOrView){
if(is_file('inc/'.$p.'/'.$DbOrView.'.php')) include_once('inc/'.$p.'/'.$DbOrView.'.php');
}

3、conn.php文件里面已经对类进行了初始化了。类中有一个方法Query()可供外部调用;

最后,运行了以上的代码,程序会就会报错Query()方法未初始化,如: Fatal error: Call to a member function Query() on a non-object 。有没有遇见过同样的问题。
另外如果,我在common页面直接对$p进行switch case判断来include相关的文件,程序就执行正常。但是我想程序写得简洁点,所以想请各位高手帮帮忙,我找遍资料没有找到解决方案。
展开
 我来答
leiniao_19
2013-04-07 · TA获得超过176个赞
知道小有建树答主
回答量:155
采纳率:0%
帮助的人:171万
展开全部
意思就是在一个非对象上调用一个成员方法。
我猜想你的代码应该是:
$db = new DB();//这个就是定义在你的conn.php中的数据库操作类
$db->Query($sql);
如果是这样的话,首先要确认你是不是用上面的这种调用方式,你可以先用var_dump($db)去验证下有没有成功创建一个数据库操作类,其次确定 Query 方法没有用private 修饰符。
你贴出来的代码不是很全,建议你把类贴出来
追问
找到问题了,global一下就好了
清友灵0cJ
2013-04-07 · TA获得超过251个赞
知道小有建树答主
回答量:450
采纳率:100%
帮助的人:288万
展开全部
调用顺序出错了,先实例再加载文件肯定是不对的。
你把数据库操作类用函数加载时再实例就可以了,不能先实例再加载文件。
追问
找到问题了,global一下就好了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式