Единственное, чего я пытаюсь добиться, — это получить доступ к Sql
собственность в классе из класса В, но мое понимание должно быть полностью за решеткой.
Я старался:
class A {
public $Sql; /*object*/
public function __construct() {
$this->Sql = new MySQLi("localhost", "user", "password", "database");
}
}
class B extends A {
public function __construct() {
$this->foo();
}
public function foo() {
var_dump($this->Sql); // NULL
var_dump(parent::Sql); // Error due to Sql not being a constant, can't set an object as a constant.
}
}
$A = new A();
$B = new B();
Но код не ведет себя так, как я надеюсь.
Надеясь, что кто-то может указать мне в правильном направлении, где я иду не так.
$A = new A();
$B = new B();
Эти две строки выше создают два разных объекта, которые не имеют ничего общего друг с другом.
Так как у вас также есть конструктор в классе B родительский конструктор не вызывается неявным, означает, что вы должны изменить свой код и вызвать конструктор из класса A в классе B, например,
public function __construct() {
parent::__construct();
$this->foo();
}
Других решений пока нет …