您当前的位置: 首页 >  php

暂无认证

  • 4浏览

    0关注

    92582博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

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

发布时间:2020-06-03 14:10:10 ,浏览量:4

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

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

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

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

第一种:复制的对象

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

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

关注
打赏
1653961664
查看更多评论
立即登录/注册

微信扫码登录

0.0729s