所以代码是: DAO 类
abstract class DAO
{
protected $db;
protected $SQL_host='localhost';
protected $SQL_port='3306';
protected $SQL_dbname='projet';
protected $SQL_login='root';
protected $SQL_password='';
protected function __construct()
{
$this->setDb(new PDO('mysql:host='.$this->SQL_host.';port='.$this->SQL_port.';dbname='.$this->SQL_dbname, $this->SQL_login, $this->SQL_password)) ;
}
protected function setDb(PDO $bdd)
{
$this->db = $bdd ;
}
}
和子用户 DAO 类
class UserDAO extends DAO
{
public function __construct()
{
parent::__construct();
}
}
当用户DAO子类继承自父DAO时,子类是否获得父级的属性?如果没有,我怎么能做到呢?
我一直在环顾四周,他们大多告诉使用 get 函数,但这真的不是我想做的。 感谢您的帮助
是的,子类继承父类的成员。
我和你一样有同样的问题。我希望子类继承数据库 pdo 实例。问题是,如果我有多个模型(例如"用户"和"文档"),它最终会创建多个 pdo 实例(超级浪费)。我诉诸依赖注入。我在类外部创建了实例,然后将其传递给任何需要 pdo 的类:
class UserDAO extends DAO
{
public function __construct($db=NULL)
{
if($db){//if database is requested
parent::__construct($db);
}
}
}
有很多支持或反对依赖注入的论据 - 但我发现这对我自己来说是最有效的。
在回答你的问题时,你似乎做对了(尽管,就像我说的,使用 PDO 它可能不是最好的)。确保脚本中包含这两个类。