Php клон не работает
Возможен клон php объекта класса и всегда все доступное изменение
пример
Class A{
private $data;
public function set($name, $value){
$this->data[$name] = $value;
}
public function get($name){
return isset($this->data[$name]) ? $this->data[$name] : null;
}
public function __clone(){
$this->data = unserialize(serialize($this->data));
}
}
Работа с клоном
$a = new A();
$a->set('dog', 'Kiki');
$b = clone $a;
var_dump($b->get('dog'));
dump value is 'Kiki';
Так что мне нужен объект для $b всегда динамического изменения, когда объект $a является примером изменения
$a = new A();
$b = clone $a;
$a->set('dog','Kiki');
var_dump($b->get('dog'));
dump value is null;
как изменить динамический объект $b, когда объект $a изменился?
Спасибо
1 ответ
Единственный способ сделать это - справиться с этим самостоятельно. Я бы предложил немного расширить класс А:
Class A{
private $data;
public $sandbox;
public function set($name, $value){
$this->data[$name] = $value;
$this->applyChanges();
}
public function get($name){
return isset($this->data[$name]) ? $this->data[$name] : null;
}
public function __clone(){
$this->data = unserialize(serialize($this->data));
}
public function createSandBox() {
$this->sandbox = new A();
$this->sandbox = clone $this;
}
public function applyChanges() {
$this->sandbox = clone $this;
}
}