因爲PHP經過參照物默認我碰到的一個小問題,那後續的腳本演示對象:克隆包含對象
$a = new stdClass();
$a->b = new stdClass();
$a->b->c = 1;
$d = clone $a;
$a->b->c = 10;
print_r($a);
print_r($d);
有沒有辦法克隆stdClass的,也克隆任何對象它可能包含?我知道我可以使用__clone方法來防止這種行爲,但我的對象是通過json_decode構建的。
因爲PHP經過參照物默認我碰到的一個小問題,那後續的腳本演示對象:克隆包含對象
$a = new stdClass();
$a->b = new stdClass();
$a->b->c = 1;
$d = clone $a;
$a->b->c = 10;
print_r($a);
print_r($d);
有沒有辦法克隆stdClass的,也克隆任何對象它可能包含?我知道我可以使用__clone方法來防止這種行爲,但我的對象是通過json_decode構建的。
我相信接受的方式是序列化和反序列化複合物
$d = unserialize(serialize($a));
既然你已經有了JSON,爲什麼你不直接從JSON
另一個創建所有對象到「深克隆」(由不添加__clone()
方法的對象IE)哈克的方式也將做:
$object_b = unserialize(serialize($object_a));
或者,因爲你是在處理所有的智慧h stdClass對象是嵌套的:
$object_b = json_decode(json_encode($object_a));
同意。當我需要一個對象的深層副本時,我就是這麼做的。更多信息@ http://melikedev.com/2011/01/13/php-deep-clone-an-object/ –