我遇到过各种冲突问题。有一个数据库类,它包含连接,更新,删除,插入,获取方法,还有扩展数据库类的用户类。
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类。
答案 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()
。