数据库类与其他类冲突


Database class conflicts with other classess

我遇到过很多冲突问题。有一个数据库类包含连接、更新、删除、插入、获取方法,还有一个用户类扩展了数据库类。

class User extends Database {...}

问题是,当我在"index.php"中同时初始化数据库类和用户类时,我会得到一个致命错误,上面写着"致命错误:无法重新声明类数据库"。

include "database.class.php";
include "user.class.php;
$db = new Database;
$db->connect();

所以,我知道初始化数据库类两次,但如何防止不发生呢?附言:我可以在其他新类中使用数据库类。

在OOP中,extends的意思是"是"。你在那里写的是:"用户是一个数据库"。这简直是疯了。

与其扩展数据库类,不如将其注入User实例的构造函数:

$database = new Database(...);
$database->connect();
$user = new User( $database );

总是喜欢组合而不是继承。

至于所有的require_once混乱。。只需学习如何使用spl_autoload_register()

如Michael所说,将您拥有的两个"includes"更改为"require_one":

require_once "database.class.php";
require_once "user.class.php";
$db = new Database;
$db->connect();

此外,如果在文件"user.class.php"中包含文件"database.classphp",也可以将其更改为"require_eonce"。

我希望它能有所帮助!