鱼C论坛

 找回密码
 立即注册
查看: 1823|回复: 5

[庖丁解牛] 0 0 4 1 ● 对象clone(克隆)

[复制链接]
发表于 2018-10-28 09:22:28 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 不二如是 于 2018-10-28 09:43 编辑

781e332a153198193e966e3ce03ccbc0.jpg


创建了对象后,在作为参数传递数据时通过引用来传递。

进行对象赋值并不是完成地复制对象,通过下面的代码来说明这件事。

我们定义一个非常简单的只有属性name没有方法的User类:
<?php
// 创建对象
$myObject = new User();
$myObject2 = new User();

// 访问对象并赋值
$myObject->name = "小甲鱼";

// 将myObject赋值给myObject2
$myObject2 = $myObject;
$myObject2->name = "不二如是";

// 输出测试
echo "myObject name = ".$myObject->name."<br>";
echo "myObject2 name = ".$myObject2->name;

// 创建User类
class User{
        // 一个参数
        public $name;
}
?>
Snip20181028_33.png


我们创建了对象myObject,其name属性值为“小甲鱼”。

接着又创建了一个myObject2对象,并将myObject值赋值给它,然后又设置name属性值为“不二如是”。

为啥最终结果两个对象的name属性都是“不二如是”呢?

很简单:
游客,如果您要查看本帖隐藏内容请回复


为了避免这种“群体伤害”,可以使用clone操作符。

它创建了类的新实例,并将原实例的属性值赋值给新实例。

简单修改上面的代码:
$myObject2 = $myObject;

为:
$myObject2 = clone $myObject;

其结果:
Snip20181028_34.png


这就非常友好了不是吗?!





这位鱼油,如果喜欢本系列PHP+MySql+Js帖子,请订阅 专辑&#9758;传送门)(不喜欢更要订阅

本帖被以下淘专辑推荐:

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2018-10-28 22:22:33 | 显示全部楼层
看一下
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-5-6 12:48:36 | 显示全部楼层
学习
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-5-20 15:10:06 | 显示全部楼层
1
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-10-23 19:15:00 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2022-9-12 12:15:24 From FishC Mobile | 显示全部楼层
为啥呢为啥呢?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-12-23 00:44

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表