Essentially, I am just creating two classes where one class, in this case class A, runs a function in another class, in this case class B, to grab some information from the database.
However, when the B_runtime() actually calls upon the database I get the error Cannot access protected property A::$db.
What I don't understand is that even though I have two __construct's in both classes the PDO statement is being very persistent on using the database connection from class A.
I am sure this has something to do with the fact that I am running the B_runtime() from within class A because this doesn't happen if I call it from outside of class A.
I know that I can simply change the protected $db; in class A to a public variable, however, I am really curious as to how I can fix this.
ob_start();
include('/config.php');
ob_end_clean();
$A = new A($db);
$B = new B($db);
echo $A->A_runtime();
class A{
protected $db;
public function __construct($db){
$this->db = $db;
}
public function A_runtime(){
return B::B_runtime();
}
}
class B{
protected $db;
public function __construct($db){
$this->db = $db;
}
public function B_runtime(){
$preparedStatement = $this->db->prepare('SELECT * FROM z_mod_html WHERE ModuleLink = :moduleid LIMIT 1');
$preparedStatement->execute(array(':moduleid' => '1'));
$rows = $preparedStatement->fetchAll();
return $rows[0]['HTML'];
}
}
Sorry for the long amount of code - if anyone has any ideas or suggestions it would be greatly appreciated. Thanks.