PHP 객체 복제 clone 키워드 및 __clone() 메소드
clone 키워드는 동일한 객체를 복제하는 데 사용되고 __clone() 메소드는 원래 속성을 다시 작성하는 데 사용됩니다. 및 방법.
객체 복제
때때로 프로젝트에서 두 개 이상의 동일한 객체를 사용해야 하는 경우 new 키워드를 사용하여 객체를 다시 만든 다음 동일한 속성을 할당하는 경우입니다. 수행하기가 더 번거롭고 오류가 발생하기 쉽습니다. PHP는 객체를 기반으로 동일한 객체를 완전히 복제할 수 있는 객체 복제 기능을 제공합니다. 또한 복제 후에는 두 객체가 서로 간섭하지 않습니다.
객체를 복제하려면 키워드 clone을 사용하세요. 구문:
$object2 = clone $object;
예:
<?php class Person { private $name; private $age; function __construct($name, $age) { $this->name=$name; $this->age=$age; } function say() { echo "我的名字叫:".$this->name."<br />"; echo "我的年龄是:".$this->age; } } $p1 = new Person("张三", 20); $p2 = clone $p1; $p2->say(); ?>
예제를 실행하고 출력:
내 이름은: Zhang San
내 나이: 20
__clone()
복제 후 원본 개체의 내용을 변경하려면 특수한 __clone()을 추가해야 합니다. Method 클래스는 원래 속성과 메서드를 재정의합니다. __clone() 메서드는 객체가 복제될 때만 자동으로 호출됩니다.
예:
<?php class Person { private $name; private $age; function __construct($name, $age) { $this->name = $name; $this->age = $age; } function say() { echo "我的名字叫:".$this->name; echo " 我的年龄是:".$this->age."<br />"; } function __clone() { $this->name = "我是假的".$this->name; $this->age = 30; } } $p1 = new Person("张三", 20); $p1->say(); $p2 = clone $p1; $p2->say(); ?>
예제를 실행하여 출력:
내 이름은: Zhang San 내 나이는: 20
내 이름은 다음과 같습니다. 저는 가짜 장산입니다. 제 나이는 30