PHP Object clone is used
1.?
? ? A __clone() is defined in PHP5 to create an object that has the same properties and methods as the original object. If you want to change the contents of the original object after cloning, you need to override the original properties and methods in __clone().
?
????? __Clone() can have no parameters, it automatically contains $this and $that two pointers.
$this pointing to the replica
$that point to the original
?
2.
If a new class is declared in the class
class concreteprototype{
?? Public Function __construct () {
?????? $this->id = 1;
?? ??? ? $this->obj = new StdClass ();
?????? $this->obj->name = ' Dashu ';
???}
???
??? Public function Myclone () {
?????? Return clone $this;
???}
???
???? //without this, $obj is a reference, with the two independent of each other, personally try to see
??? ?private function __clone () {
?????? $this->obj = Clone $ This->obj;
???}
}
$p = new Concreteprototype ();
$q = $p->myclone ();
var_dump ($p, $q);
$q->id = 2;
//change $q properties of obj, $p corresponding property does not change
$q->obj->name = ' xiayi ';
?