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:} ) 看一下{:5_109:} 学习 1 {:10_277:} 为啥呢为啥呢?
页:
[1]