马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
本帖最后由 不二如是 于 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属性都是“不二如是”呢?
很简单:
为了避免这种“群体伤害”,可以使用clone操作符。
它创建了类的新实例,并将原实例的属性值赋值给新实例。
简单修改上面的代码:
为:$myObject2 = clone $myObject;
其结果:
这就非常友好了不是吗?!
这位鱼油,如果喜欢本系列PHP+MySql+Js帖子,请订阅 专辑☞( 传送门)( 不喜欢更要订阅 ) |