数据库类与其他类冲突

时间:2012-04-02 19:38:19

标签: php oop class declaration extends

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

class User extends Database {...}

问题是,当我在“index.php”中同时初始化Database类和User Class时,我收到致命错误,上面写着“致命错误:无法重新声明类数据库”。

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

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

2 个答案:

答案 0 :(得分:1)

改变你对“require_once”的两个“包含”,迈克尔说:

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

此外,如果在“user.class.php”文件中包含文件“database.class.php”,也将其更改为“require_once”。

我希望它有所帮助!

答案 1 :(得分:1)

在OOP中,extends表示“是一个”。你在那里写的内容是:“用户是一个数据库”。哪些是可以证明的疯狂。

您应该将它注入User实例的构造函数中,而不是扩展数据库类:

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

始终favor composition over inheritance

至于所有require_once混乱..只是学习如何使用spl_autoload_register()