얕은 복제: 객체에 있는 비객체 비자원 데이터, 즉 객체의 속성이 객체 유형을 저장하기만 하면 불완전한 복제가 발생합니다.
<code><span><span><?php </span><span><span>class</span><span>B</span>{</span><span>public</span><span>$val</span> = <span>10</span>; } <span><span>class</span><span>A</span>{</span><span>public</span><span>$val</span> = <span>20</span>; <span>public</span><span>$b</span>; <span>public</span><span><span>function</span><span>__construct</span><span>()</span>{</span><span>$this</span>->b = <span>new</span> B(); } } <span>$obj_a</span> = <span>new</span> A(); <span>$obj_b</span> = <span>clone</span><span>$obj_a</span>; <span>$obj_a</span>->val = <span>30</span>; <span>$obj_a</span>->b->val = <span>40</span>; var_dump(<span>$obj_a</span>); <span>echo</span><span>'<br>'</span>; var_dump(<span>$obj_b</span>);</span></span></code>
딥 클로닝: 객체의 모든 속성 데이터가 완전히 복사됩니다. 매직 메소드인 __clone()을 사용하여 딥 클로닝을 구현해야 합니다
<code><span><span><?php </span><span><span>class</span><span>B</span>{</span><span>public</span><span>$val</span> = <span>10</span>; } <span><span>class</span><span>A</span>{</span><span>public</span><span>$val</span> = <span>20</span>; <span>public</span><span>$b</span>; <span>public</span><span><span>function</span><span>__construct</span><span>()</span>{</span><span>$this</span>->b = <span>new</span> B(); } <span>public</span><span><span>function</span><span>__clone</span><span>()</span>{</span><span>$this</span>->b = <span>clone</span><span>$this</span>->b; } } <span>$obj_a</span> = <span>new</span> A(); <span>$obj_b</span> = <span>clone</span><span>$obj_a</span>; <span>$obj_a</span>->val = <span>30</span>; <span>$obj_a</span>->b->val = <span>40</span>; var_dump(<span>$obj_a</span>); <span>echo</span><span>'<br>'</span>; var_dump(<span>$obj_b</span>);</span></span></code>').addClass('pre-numbering').hide(); $(this).addClass('has-numbering').parent().append($numbering); for (i = 1; i ').text(i)); }; $numbering.fadeIn(1700); }); });
위 내용을 포함해 PHP 클론을 소개하고 있는데, PHP 튜토리얼에 관심이 있는 친구들에게 도움이 되었으면 좋겠습니다.