前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >php面向对象第九篇 对象克隆clone,记住哈,$that已经被废除了,使用会错的啊啊!!!

php面向对象第九篇 对象克隆clone,记住哈,$that已经被废除了,使用会错的啊啊!!!

作者头像
贵哥的编程之路
发布2020-10-28 15:10:35
4720
发布2020-10-28 15:10:35
举报
文章被收录于专栏:用户7873631的专栏

对象克隆的核心:是克隆出的是一个同一个类下的对象,并且两个对象之间互不干扰。 互不干扰的意思是;两个对象并不是指向同一个内存地址的哈。 克隆:的意思是new一个出来把,前提条件必须是同一个类下的哈 代码演示把:

代码语言:javascript
复制
<?php
class fu
{
	function eat()
	{
		echo "爸爸在吃饭";
	}
}
class zi extends fu
{
	var $name='cyg';
	
}
$zi1=new zi();
echo "zi1".$zi1->name;
echo "<br />";
$zi2=clone $zi1;//对象克隆,clone代表开辟一段新的内存地址,$zi1代表是同一个类的实例的哈.给$zi2
echo "zi2".$zi2->name;
echo "<br />";
$zi2->name='lw';
echo "zi1".$zi1->name;
echo "<br />";
echo "zi2".$zi2->name;
?>

记住,互不干扰!!! 不然直接写zi2=zi1;会干扰的哈

__clone方法: 是在对象克隆时自动调用的方法,用“__clone()”方法将建立一个与原对象拥有相同属性和方法的对象,如果想在克隆后改变原对象的内容,需要在__clone()中重写原本的属性和方法,“__clone()”方法可以没有参数,它自动包含 t h i s 和 this和 this和that两个指针, t h i s 指 向 复 本 ( 复 制 后 的 对 象 ) , 而 this指向复本(复制后的对象),而 this指向复本(复制后的对象),而that指向原本(原来的对象);

第一种:复制的对象

代码语言:javascript
复制
<?php
class fu
{
	function eat()
	{
		echo "爸爸在吃饭";
	}
}
class zi extends fu
{
	var $name='cyg';
	function __clone()
	{
		$this->name='fffffff';
	}
}
$zi1=new zi();
echo "zi1".$zi1->name;
echo "<br />";
$zi2=clone $zi1;//对象克隆,clone代表开辟一段新的内存地址,$zi1代表是同一个类的实例的哈.给$zi2
echo "zi2".$zi2->name;
echo "<br />";
$zi2->name='lw';
echo "zi1".$zi1->name;
echo "<br />";
echo "zi2".$zi2->name;
?>

第二种:原来的对象 做不了,$that已经被废除了,为什么,因为使用它报错!!!

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2020/06/03 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档