关于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相关的文件,程序就执行正常。但是我想程序写得简洁点,所以想请各位高手帮帮忙,我找遍资料没有找到解决方案。 展开
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相关的文件,程序就执行正常。但是我想程序写得简洁点,所以想请各位高手帮帮忙,我找遍资料没有找到解决方案。 展开
展开全部
意思就是在一个非对象上调用一个成员方法。
我猜想你的代码应该是:
$db = new DB();//这个就是定义在你的conn.php中的数据库操作类
$db->Query($sql);
如果是这样的话,首先要确认你是不是用上面的这种调用方式,你可以先用var_dump($db)去验证下有没有成功创建一个数据库操作类,其次确定 Query 方法没有用private 修饰符。
你贴出来的代码不是很全,建议你把类贴出来
我猜想你的代码应该是:
$db = new DB();//这个就是定义在你的conn.php中的数据库操作类
$db->Query($sql);
如果是这样的话,首先要确认你是不是用上面的这种调用方式,你可以先用var_dump($db)去验证下有没有成功创建一个数据库操作类,其次确定 Query 方法没有用private 修饰符。
你贴出来的代码不是很全,建议你把类贴出来
追问
找到问题了,global一下就好了
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询