php clone 메소드는 정수 $a를 변수 $b에 할당하면 $b는 $a의 "복사본"이지만 둘은 관련이 없으며 $b의 값이 변경됩니다. . $a에는 영향을 미치지 않으며 $a 값의 변경은 $b에 영향을 미치지 않습니다.
권장: "PHP Video Tutorial"
PHP 객체 복제: __clone() 메소드
객체 복제: __clone() 메소드
특정 After 변수에 정수 $a를 할당할 때 $b, $b는 $a의 "사본"이지만 둘은 관련이 없습니다. $b 값의 변경은 $a에 영향을 주지 않으며 $a 값의 변경은 $b에 영향을 미치지 않습니다. 배열의 경우에도 마찬가지지만 객체의 경우에는 다릅니다. 객체 인스턴스 $a가 변수 $b에 할당되면 $b는 $a의 "복사본"이 아니라 값이 변경됩니다. $a에 영향을 미치고 $a의 값 변경은 $b에도 영향을 미칩니다.
예:
<?php class Cat{ public $name; function __construct($name){ echo 'Cat类启动'; $this->name = $name; } function __destruct(){ echo 'Cat类结束'; } } $a = new Cat("默默");//实例化类,调用无参数的构造方法 //$c被销毁时自动调用析构方法 $b=$a; echo "改变之前:<br>"; echo "a->name:".$a->name."<br>"; echo "b->name:".$b->name."<br>"; $a->name="琳琳"; echo "改变之后:<br>"; echo "a->name:".$a->name."<br>"; echo "b->name:".$b->name."<br>"; ?>
실행 결과:
Cat 클래스는 변경 전에 시작됩니다:
a->name: Silent
b- >name: Silently
변경 후:
a->name: Linlin
b->name: Linlin
하지만 개체 인용뿐만 아니라 개체의 복사본이 필요한 경우가 많습니다. 이때 clone 키워드를 사용할 수 있지만 "cloned" 클래스 속성에 참조가 있으면 해당 참조가 유지됩니다. 즉, 복사본의 참조와 원본 클래스의 참조가 모두 유지됩니다. .
예:
<?php class Cat{ public $name; function __construct($name){ echo 'Cat类启动'; $this->name = $name; } function __destruct(){ echo 'Cat类结束'; } } $a = new Cat("默默");//实例化类,调用无参数的构造方法 //$c被销毁时自动调用析构方法 $b=clone $a; echo "改变之前:<br>"; echo "a->name:".$a->name."<br>"; echo "b->name:".$b->name."<br>"; $a->name="琳琳"; echo "改变之后:<br>"; echo "a->name:".$a->name."<br>"; echo "b->name:".$b->name."<br>"; ?>
작업 결과:
변경 전 Cat 클래스 시작:
a->name: 자동으로
b->name: 자동으로
변경 후:
a->name: Linlin
b->name: Silently
Cat 클래스 종료 Cat 클래스 종료
이 클래스의 $name 속성에는 참조가 부여되므로 clone 키워드를 사용하여 복사할 때 이름 "복사본"에서 "원본" $name은 동일한 변수를 가리킵니다
위 내용은 PHP 복제 방법이란 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!