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
php多克,php对象克隆相关推荐
- Java提升篇:对象克隆(复制)
引论 假如说你想复制一个简单变量.很简单: int apples = 5; int pears = apples; 不仅仅是int类型,其它七种原始数据类型(boolean,char,byte,sho ...
- Java提高—对象克隆(复制)/对象属性拷贝
对象克隆(复制)假如说你想复制一个简单变量.很简单: int apples = 5; int pears = apples; 不仅仅是int类型,其它七种原始数据类型(boolean,char,byt ...
- Java进阶之对象克隆(复制)
转载自 Java进阶之对象克隆(复制) 假如说你想复制一个简单变量.很简单: int apples = 5; int pears = apples; 不仅仅是int类型,其它七种原始数据类型(bo ...
- JAVA进阶—注解,对象克隆,设计模式
目录 注解 什么是注解 内置注解 元注解 重点掌握 自定义注解 对象克隆 为什么要克隆? 如何实现克隆 解决多层克隆问题 Java 设计模式(java design patterns) 设计模式概念 ...
- java中stu是啥,Java 面试:对象克隆
原标题:Java 面试:对象克隆 转自:博客园,作者:萌小Q 链接:www.cnblogs.com/Qian123/p/5710533.html#_labelTop 假如说你想复制一个简单变量.很简单 ...
- Java提高篇——对象克隆
Java提高篇--对象克隆(复制) 阅读目录 为什么要克隆? 如何实现克隆 浅克隆和深克隆 解决多层克隆问题 总结 假如说你想复制一个简单变量.很简单: int apples = 5; int pea ...
- 对象克隆-深拷贝,浅拷贝,直接赋值
1背景分析 在 Java 开发中,对象拷贝或者说对象克隆是常有的事,对象克隆最终都离不开直接赋值.浅拷贝.深拷贝 这三种方式,我们常用的对象的转化方式,使用的是spring的 BeanUtils.co ...
- Java学习总结:34(对象克隆)
对象克隆 对象克隆就是对对象的复制操作,在Object类中存在一个clone()方法用于对象的克隆操作.该方法如下: protected Object clone() throws CloneNotS ...
- public接口可以被任何一个类实现_一文带你深入Java核心技术:对象克隆+接口与回调,还有这种操作...
对象克隆 当拷贝一个变量时,原始变量与拷贝变量引用同一个对象,如图6-1所示.这就是说,改变一个变量所引用的对象将会对另一个变量产生影响. Employee original = new Employ ...
- java对象序列化克隆_JAVA 对象克隆和序列化
先用一个例子来说明假克隆吧,也就是用"="之后的效果.. [运行结果]: [运行结果] 姓名:rollen年龄:20 姓名:hello world年龄:100 姓名:hello w ...
最新文章
- 鸿蒙系统tee内核,厉害!鸿蒙内核的技术定位,是赶第三代微内核的潮流
- linux平台下防火墙iptables原理(转)
- failed due to the following error: 80070005 错误解决方案
- linux:系统对open files的限制
- Vue-router VUE路由系统
- HDU4417 Super Mario 主席树
- Flink编程入门(二)
- Easyui动态加载后台数据的例子
- 解决人工智能PCA算法输出不稳定的方案
- STM8单片机ADC连续扫描模式
- FindBugs-IDEA图标说明
- 福气太薄,刚积攒了点又被自己扔了
- Android自带语音播报TextToSpeech功能开发记录
- 《迅雷链精品课》第九课:区块链 P2P 网络
- 1年工作经验的C++程序员,感悟分享
- AcWing 1129 热浪
- 2 路 FULL Cameralink 视觉检测 BOX
- Windows Presentation Foundation 巡游
- LeetCode(49)Anagram
- phpEnv-专业优雅强大的php集成环境
热门文章
- python中关于深嵌元组转列表的小问题
- win10电脑显示无法自动修复此计算机,win10系统无法自动修复此计算机的操作步骤...
- Raki的读paper小记:Model Zoo: A Growing “Brain” That Learns Continually
- [HEOI2015]定价 (贪心)
- PL/SQL Developer使用技巧、快捷键(转发)
- VUE2.0 测试环境配置
- CentOS 下安装maven3.04
- [导入]Reporting Services 6: 在服务器端报表中筛选数据
- java中Field中的方法,解析Java中的Field类和Method类
- Mysql-DML操作