Итак, у меня есть следующий класс:
class db {
function __construct() { ... }
}
и я могу создать его таким образом: $db = new db();
У меня есть другой класс - основной класс, который формирует основу моего приложения. Давайте назовем это главным:
class main {
public $var1;
public $db;
function __construct() {
$this->db = new db();
$this->start();
}
function start() {
$child = new child();
}
}
После инициализации объекта базы данных я хочу вызвать мой дочерний класс (который является расширением main, например так:
class child extends main {
function __construct(){
echo parent::$var1; // Prints whatever is in $var1
}
function doSomething(){
parent::$db->runQuery(); // Doesn't work
}
}
Однако это не работает. Очевидно, что я могу просто объявить свой $db
объект вне моего основного класса и использовать global $db;
, чтобы снова поднять его в дочернем объекте, но я бы предпочел этого не делать (поскольку это означает наличие этой строки в каждой функции, использовать объект базы данных).
Как я могу просто сделать мой $db
объект доступным для дочерних классов?