Наследование и синглетон
Есть singleton
и созданы два класса A
и B
наследующие от класса core
.
Вопрос в следующем:
- Класса
А
дочерний от родительского классаcore
, - Класс
B
дочерний от родительского классаA
,
Почему же getInstance()
для дочернего класса B
не получает значение переменной a
?
class core{
public $a;
public static function getInstance() {
static $instance = null;
if(is_null($instance)) {
$instance = new static();
}
return $instance;
}
protected final function __construct() { $this->a = 1; }
protected final function __clone() {}
protected final function __wakeup() {}
}
class A extends core{}
class B extends A{}
$a = A::getInstance();
$a_new = A::getInstance();
$b = B::getInstance();
var_dump($a); //1
var_dump($a_new); //1
var_dump($b); //1
$a->a = 2;
var_dump($a->a); //2
var_dump($a_new->a); //2
var_dump($b->a); //1 ??
Источник: Stack Overflow на русском