我确定以前已经有人问过这个问题,但是我找不到相关的问题,也许我使用了错误的搜索词...
在我的index.php中,包括class_lib.php,其中包含我的Database类。然后,我包括一个php文件,该文件显示了从数据库中收集的一些信息,并且在初始加载时运行良好。最后,我有一个按钮可以刷新包含的php文件,并使用jQuery再次.load()替换原来的html / script。
在第二次加载时,我得到:
致命错误:未捕获的错误:在path / to / module.php中找不到类'Database'堆栈跟踪:#0 {main}在第33行的path / to / module.php中抛出了
很明显,第33行是我第一次在module.php中调用Database类
$database = new Database();
愚蠢的是,我尝试再次将class_lib.php包含在module.php中,结果是:
致命错误:无法声明类主角,因为该名称已在path / to / Class_lib.php中使用
我读了一些有关自动加载器的信息,我读了一些有关require_once,include_once等的信息-las,我仍然很茫然。这是我的(简化)代码...
内部index.php
<html><head>
<?php include('class_lib.php') ?>
</head><body>
<div id="module">
<?php include('module.php') ?> //Include the module, displays fine on first run
</div>
</body></html>
class_lib.php
class Database{
//private vars
//public functions, __construct(), query(), bind(), execute(), others
}
module.php
$database = new Database();
//run queries, display results, the usual
<div id="refreshButton">Refresh This Module</div>
<script>
$('#refreshButton').on('click', function(){
$('#module').load('module.php');
}
</script>
因此,如果我不能两次包含Database类,并且在第二次加载时找不到该类,该如何进行这项工作?
答案 0 :(得分:0)
将 fun AddToList(){
mRef.child("MyPosts").child("TEST").addValueEventListener(object
:ValueEventListener{
override fun onCancelled(p0: DatabaseError?) {
Toast.makeText(this@NewsList,"Error",Toast.LENGTH_SHORT).show()
}
override fun onDataChange(datap0: DataSnapshot?) {
try {
var td = datap0!!.value as HashMap<String,Any>
MyList.clear()
for (key in td.keys){
var data = td[key] as HashMap<String,Any>
MyList.add(ForList(
data["pic"] as String
,data["txt1"] as String
,data["txt2"] as String
,data["m1"] as String
,data["m2"] as String
,data["m3"] as String
)
)
adapter!!.notifyDataSetChanged()
}
}catch (ex:Exception){
Log.e("MyAPP","Error on you app 0000",ex)
}
}
})
}
放在module.php文件中或
在两个地方都使用include('class_lib.php')
进行调用,那么如果已经包含include_once('class_lib.php')
,则不会再次调用它。