이 기사의 예에서는 PHP 객체 복제 복제본의 사용법을 설명합니다. 참조용으로 모든 사람과 공유하십시오. 세부 사항은 다음과 같습니다.
얕은 복제: 객체의 비객체 비자원 데이터만 복제합니다. 즉, 객체의 속성은 객체 유형을 저장합니다. 그러면 불완전 복제가 발생합니다
<?php class B{ public $val = 10; } class A{ public $val = 20; public $b; public function __construct(){ $this->b = new B(); } } $obj_a = new A(); $obj_b = clone $obj_a; $obj_a->val = 30; $obj_a->b->val = 40; var_dump($obj_a); echo '<br>'; var_dump($obj_b);
실행 결과는 다음과 같습니다.
object(A)[1] public 'val' => int 30 public 'b' => object(B)[2] public 'val' => int 40 object(A)[3] public 'val' => int 20 public 'b' => object(B)[2] public 'val' => int 40
딥 클로닝: 객체의 모든 속성 데이터가 완전히 복사되었으므로 매직 메소드 __clone()을 사용하고 그 안에 딥 클로닝을 구현해야 합니다.
<?php class B{ public $val = 10; } class A{ public $val = 20; public $b; public function __construct(){ $this->b = new B(); } public function __clone(){ $this->b = clone $this->b; } } $obj_a = new A(); $obj_b = clone $obj_a; $obj_a->val = 30; $obj_a->b->val = 40; var_dump($obj_a); echo '<br>'; var_dump($obj_b);
실행 결과는 다음과 같습니다.
object(A)[1] public 'val' => int 30 public 'b' => object(B)[2] public 'val' => int 40 object(A)[3] public 'val' => int 20 public 'b' => object(B)[4] public 'val' => int 10
이 글이 PHP 프로그래밍에 종사하는 모든 분들께 도움이 되기를 바랍니다.
PHP 객체 복제 클론 사용 예와 관련된 더 많은 기사를 보려면 PHP 중국어 웹사이트를 주목하세요!