首页 > 代码库 > php __clone实现
php __clone实现
<?phpclass 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) }}
php __clone实现
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。