不二如是 发表于 2018-10-28 09:22:28

0 0 4 1 ● 对象clone(克隆)

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



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

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

我们定义一个非常简单的只有属性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;
}
?>


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

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

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

很简单:
**** Hidden Message *****

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

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

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

为:
$myObject2 = clone $myObject;

其结果:


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




这位鱼油,如果喜欢本系列PHP+MySql+Js帖子,请订阅 专辑☞(传送门)(不喜欢更要订阅{:10_297:} )

考拉熊 发表于 2018-10-28 22:22:33

看一下{:5_109:}

wjz@loveiy.com 发表于 2020-5-6 12:48:36

学习

优时风 发表于 2020-5-20 15:10:06

1

omg123460 发表于 2021-10-23 19:15:00

{:10_277:}

知识改变眼界 发表于 2022-9-12 12:15:24

为啥呢为啥呢?
页: [1]
查看完整版本: 0 0 4 1 ● 对象clone(克隆)