php __clone実装
7826 ワード
<?php
class Account {
public $balance;
public function __construct($balance) {
$this->balance = $balance;
}
}
class Person {
private $id;
private $name;
private $age;
public $account;
public function __construct($name, $age, Account $account) {
$this->name = $name;
$this->age = $age;
$this->account = $account;
}
public function setId($id) {
$this->id = $id;
}
public function __clone() { // , clone
$this->id = 0;
$this->account = clone $this->account; // ,account clone , account balance
}
}
$person = new Person("peter", 15, new Account(1000));
$person->setId(1);
$person2 = clone $person;
$person2->account->balance = 250;
echo '<pre>';
var_dump($person, $person2);
?>
object(Person)#1 (4) {
["id":"Person":private]=>
int(1)
["name":"Person":private]=>
string(5) "peter"
["age":"Person":private]=>
int(15)
["account"]=>
object(Account)#2 (1) {
["balance"]=>
int(1000)
}
}
object(Person)#3 (4) {
["id":"Person":private]=>
int(0)
["name":"Person":private]=>
string(5) "peter"
["age":"Person":private]=>
int(15)
["account"]=>
object(Account)#4 (1) {
["balance"]=>
int(250)
}
}