我有多个课程,在这种情况下是Core
和User
。目前User
是Core
的扩展。Core
。在__construct
中,我有多个类所需的主要功能,例如通过PDO的数据库连接。我使用User
函数来构建数据库连接,没有问题。
但是,在我的__construct
课程中,我想通过Core
将值传递给多个属性。例如,名字,姓氏,电子邮件,密码和一些其他属性。
执行此操作时,我收到来自Netbeans的警告,应该使用父构造函数,以及许多模糊错误,我不会要求您修复这些错误。
我想知道是否有一种方法可以使用User
中abstract class Core implements ICore {
private $_dbcon;
public function __construct($_database){
$this->_dbcon = $_database;
}
public function _connectDB(){
return $this->_dbcon;
}
class User extends Core implements IUser {
public $_username;
private $_password;
protected $_email;
protected $_adres;
protected $_phone;
protected $_contactperson;
protected $_company;
protected $_kvk;
public function __construct($_username, $_password, $_email, $_adres, $_phone, $_contactperson, $_company, $_kvk){
$this->_username = $_username;
$this->_password = $_password;
$this->_email = $_email;
$this->_adres = $_adres;
$this->_phone = $_phone;
$this->_contactperson = $_contactperson;
$this->_company = $_company;
$this->_kvk = $_kvk;
}
的数据库连接功能,而无需进行扩展。我希望通过一些背景信息可以更清楚了!
在两个班级下方,仅显示与问题相关的部分:
{{1}}
答案 0 :(得分:0)
你必须调用父构造函数。
class User extends Core
{
public function __construct($db, $username, ...)
{
parent::__construct($db);
$this->_username = $_username;
...
}
}
但在你的情况下,我会考虑更好的整体设计。阅读Dependency injection。这样,您只有一个数据库连接,并在其他类中使用该连接。
class User
{
protected $db;
public function __construct(Db $db)
{
$this->db = $db;
}
}