PHP5는 객체가 복제될 때 자동으로 호출되는 "__clone()"이라는 특수 메소드를 정의합니다. "__clone()" 메소드를 사용하면 원래 객체와 동일한 속성과 메소드를 가진 객체가 생성됩니다. 복제 후 원본 객체의 내용을 변경하려면 __clone()에서 원래 속성과 메서드를 다시 작성해야 합니다. "__clone()" 메서드에는 $this 및 $that라는 두 개의 포인터가 자동으로 포함됩니다. $this는 복사본을 가리키고, $that은 원본을 가리킵니다.
클래스 사람 {
//다음은 people의 회원 속성입니다
var $name; // 사람 이름
var $sex; // 개인의 성별
var $age; // 나이
// 속성 이름 $name, 성별 $sex 및 연령 $age에 값을 할당하는 생성자 매개변수를 정의합니다.
// 함수 __construct($name="", $sex="",$age="")
함수 __construct($name, $sex, $age) {
$this->name = $name;
$this->sex = $sex;
$this->age = $age;
}
//이 사람이 말할 수 있는 방법은 자신의 속성을 말하는 것입니다
함수 say() {
echo "내 이름은: " . $this->name . " 성별: " . $this->sex . " $this
->나이 ."
";
}
// 객체가 복제될 때 자동으로 호출되는 메서드 복제 후 원본 객체의 내용을 변경하려면 __clone()에서 원래 속성과 메서드를 다시 작성해야 합니다.
함수 __clone() {
// $this는 복사본 p2를 참조하고 $that은 원본 p1을 가리키므로 이 방법에서는 복사본의 속성이 변경됩니다.
$this->name = "나는 복사된 Zhang San$that->name입니다";
// $this->나이 = 30;
}
}
$p1 = 새 사람( "张三", "男", 20 );
$p2 = $p1 복제;
$p1->()라고 말하세요;
$p2->말하기 ();
?>
이 PHP 프로그램을 성공적으로 실행한 후의 결과는 다음과 같습니다.
내 이름은: Zhang San 성별: 남자 내 나이: 20
내 이름은: 복사됩니다. Zhang San 성별: 남자 내 나이: 20