爱程序网

php __clone需要注意的问题

来源: 阅读:

  当一个对象的属性是另外一个对象时,当有一个对象复制该对象时,当复制到这个属性(一个对象)时,只复制这个属性(对象)的引用,而不复制引用的对象。

class Account{    public $balance;   function __construct($balance){       $this->balance=$balance;   }}class Person{  private $name;  private $age;  private $id;  public $account;  function __construct($name,$age,$account){      $this->name=$name;      $this->age=$age;      $this->account=$account;  }  function setId($id){    $this->id=$id;  }  function __clone(){   $this->id=0;  }}$p1=new Person('tom', 33, new Account(200));$p1->setId(4);$p2=clone $p1;//给$p1充500 $p1->account->balance+=500;//结果$p2也得到了这笔钱print $p2->account->balance; //700