Php克隆不工作
是否可以克隆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
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;
}
}