so the code is : DAO class
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 ;
}
}
and child UserDAO class
class UserDAO extends DAO
{
public function __construct()
{
parent::__construct();
}
}
When UserDAO child class inherits from parent DAO, does the child get parent's attributes ? If not, how can I make so ?
I've been looking around and they mostly tell to use get function but that's really not what i'm trying to do. Thanks for your help
Yes, the subclass inherits the parent class's members.
I had the same issue as yourself. I wanted child classes to inherit the database pdo instance. The problem was, if I had multiple models ("users" and "documents" for example), it ended up creating multiple pdo instances (super wasteful). I resorted to dependency injection. I created the instance outside the class, then passed it to any class that needed pdo:
class UserDAO extends DAO
{
public function __construct($db=NULL)
{
if($db){//if database is requested
parent::__construct($db);
}
}
}
There are loads of arguments for or against dependency injection - but I found this to work the most efficiently for myself.
In answer to your question, it seems you're doing it right (though, like I said, with PDO it might not be the best). Make sure both classes are included in your script.