php多克,php对象克隆

思考:对象只能通过实例化产生,而且即便是将对象复制给变量,得到的还是同一个对象,如果有的时候需要得到新的对象,除了实例化之外还有其他办法?

引入:对象理论上应该通过实例化来产生,这是对象产生的根本,但是有时候如果想在已有的对象上产生一个新的对象,可以通过克隆来实现。

对象克隆

定义:克隆对象clone,即通过已有的对象复制一个新的同样对象,但是两者之间并非用一个对象。

1.对象克隆是通过clone关键字实现,即clone 对象

class student{

public $name;

public $age=32;

}

//实例化

$s1=new student();

echo $s1->age; //输出32

//clone

$s2= clone $s1;

echo $s2->age; //返回32

echo '


';

//新对象age属性重新赋值

$s2->age=77;

echo $s1->age; //32

echo $s2->age; //77 并不是同一个对象。

?>

2.对象在实例化的时候会自动调用存在的构造方法__construct(),同样的,在类的内部,php允许定义一个__clone的方法,在对象被克隆后,新克隆出来的对象会自动调用

class student{

public $name;

public $age=32;

public function __clone(){

var_dump($this);

$this->age++;

}

}

$s1=new student();

$s2=clone $s1;

echo $s2->age; //输出33 并且var_dump()也输出了

?>

3.如果不允许对象被克隆,可以将__clone()方法私有化(本质四不允许对象在外部被克隆)

class student{

public $name;

public $age=32;

//私有化,表示不允许该对象在外部克隆

private function __clone(){

}

}

?>

总结:

1.对象可以通过克隆来得到新的对象(以前只能实例化)

2.克隆出来的对象会自动调用类中对应的__clone()方法(如果有该方法的话)

3.可以通过私有化来实现禁止外部对象克隆

标签:克隆,对象,s2,age,echo,php,clone

来源: https://www.cnblogs.com/xiaowie/p/12235711.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值