我有5个脚本,比方说:database.php、parent.php、child1.php、child2.php和somescript.php。
parent.php类看起来像这样。
include 'database.php';
class Parent {
public $db;
function __construct() {
$this->db = new Database();
}
}
child1和child2类看起来像这样。
include 'parent.php';
class Child1 extends Parent {
function __construct() {
parent::__construct();
}
function useDb() {
$this->db->some_db_operation();
}
}
问题是
当我试图在somescript.php中同时包含child1和child2时,会返回以下错误。
不能声明数据库类,因为这个名字已经在 database.php的第4行 (这一行包含'类数据库')。
但如果我只包括一个文件(child1或child2),它就能很好地工作。
我怎样才能纠正这一点呢?
你想使用include_once()或require_once()。另一个选择是创建一个额外的文件,以正确的顺序包含你所有的类,这样他们就不需要自己调用include。
"classes.php"
include 'database.php';
include 'parent.php';
include 'child1.php';
include 'child2.php';
那么你只需要。
require_once('classes.php');
我以前也有这个问题,为了解决这个问题。 只要确保:
1.你之前没有创建这个类的实例 2.如果你从一个类的方法中调用这个,请确保你所调用的类的__destruct被设置。
我的问题(之前):
我有一个类:Core, Router, Permissions 和 Render。
Core包括Router类,Router然后调用Permissions类,然后Router __destruct调用Render类,出现了错误"不能声明类,因为名字已经在使用了"。
解决方案。 我在Permission类上添加了destruct,destruct是空的,它被修复了......