передать измененные родительские свойства дочернему классу

Я создал родительский класс (A) и изменил некоторые из его открытых и защищенных свойств.

Я создал дочерний класс (B), который расширяет A.

Я могу видеть родительские свойства в экземпляре B после его создания.

Проблема в том, что унаследованные свойства B имеют значения по умолчанию A до того, как я их изменил.

Я хочу, чтобы B содержал измененные значения унаследованных свойств.

Как?

class Dashboard {
protected $testBusinessesIds = '';

public function test_bids($a){
$this->testBusinessesIds = $a;
}

}

class DashboardDBHelper extends Dashboard{
protected $withoutTestBids = '';

public function __construct(){
if($this->testBusinessesIds != '')
$this->withoutTestBids = " AND B.`id`";
}
}
$d = new Dashboard();
$d->test_bids(23);

$dh = new DashboardDBHelper();
print_r($dh->withoutTestBids);

Я вижу: «вместо» И Б.id

0

Решение

Возможно, вам придется поместить вашу собственность как статическую. Вот пример:

class A {
protected $value = 1;
protected static $staticValue = 1;

public function printStatic() {
self::$staticValue++;
echo self::$staticValue;
}

public function printNonStatic() {
$this->value++;
echo $this->value;
}
}

class B extends A {

public function printStatic() {
echo self::$staticValue;
}

public function printNonStatic() {
echo $this->value;
}
}

$a = new A();
$b = new B();

/* Class A */
$a->printStatic(); // 2
$a->printNonStatic(); // 2

/* Class B */
$b->printStatic(); // 2
$b->printNonStatic(); // 1

Статические переменные не разделяют один и тот же класс / объект, поэтому, если вы измените значение, оно будет изменено везде.

1

Другие решения

Других решений пока нет …