>  기사  >  백엔드 개발  >  PHP 객체 복제 clone 사용 예

PHP 객체 복제 clone 사용 예

高洛峰
高洛峰원래의
2016-12-21 14:04:421134검색

이 기사의 예에서는 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 &#39;<br>&#39;;
var_dump($obj_b);

실행 결과는 다음과 같습니다.

object(A)[1]
 public &#39;val&#39; => int 30
 public &#39;b&#39; =>
 object(B)[2]
  public &#39;val&#39; => int 40
 
object(A)[3]
 public &#39;val&#39; => int 20
 public &#39;b&#39; =>
 object(B)[2]
  public &#39;val&#39; => 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 &#39;<br>&#39;;
var_dump($obj_b);

실행 결과는 다음과 같습니다.

object(A)[1]
 public &#39;val&#39; => int 30
 public &#39;b&#39; =>
 object(B)[2]
  public &#39;val&#39; => int 40
 
object(A)[3]
 public &#39;val&#39; => int 20
 public &#39;b&#39; =>
 object(B)[4]
  public &#39;val&#39; => int 10

이 글이 PHP 프로그래밍에 종사하는 모든 분들께 도움이 되기를 바랍니다.

PHP 객체 복제 클론 사용 예와 관련된 더 많은 기사를 보려면 PHP 중국어 웹사이트를 주목하세요!


성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.