重新加载PHP后找不到类

时间:2018-08-12 21:38:37

标签: php jquery

我确定以前已经有人问过这个问题,但是我找不到相关的问题,也许我使用了错误的搜索词...

在我的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类,并且在第二次加载时找不到该类,该如何进行这项工作?

1 个答案:

答案 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'),则不会再次调用它。