Php克隆不工作

Php克隆不工作,php,reference,clone,Php,Reference,Clone,是否可以克隆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 fun

是否可以克隆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更改时,如何更改动态对象$b


谢谢

要做到这一点,唯一的办法就是自己处理。我建议把课程延长一点:

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;
  }

}

如果您想在
$a
更改时更改
$b
,那么为什么要克隆?只要做
$b=$a
。这有什么意义?你可以让
$b
参考
$a
。。。因为我有一些私有类,所以我需要将它克隆到静态对象,以便在我的项目中的任何地方调用,并作为沙盒工作!所以B应该接管A中的所有更改,但B不应该影响A,对吗?
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;
  }

}