php程序克隆,php克隆 - freedom - OSCHINA - 中文开源技术交流社区
对象克隆
在php中使用"clone"关键字来克隆对象。
class Person {
public $name;
function __construct($name="" ) {
$this->name =$name;
}
function say() {
echo "我叫:". $this->name ."
" ;
}
}
$Person=new Person( "张三");
$Person1=clone $Person; //使用clone关键字克隆(复制)对象,创建一个对象的副本
// $Person1=$Person //这不是复制对象,而是为对象多复制出一个访问该对象的引用
$Person->say();
$Person1->say();
?>
上面程序运行结果为:
我叫:张三
我叫:张三
克隆的副本和原本拥有相同的类和属性
if($Person == $Person1){
echo "Person和Person1具有相同的类和属性" ;
}else{
return false;
}
程序输出:Person和Person1具有相同的类和属性
克隆的副本和原本存储在不相同的位置
if ($Person === $Person1)
echo "Person和Person1具有相同的类和属性且存储在相同的位置" ;
} else{
return false ;
}
程序结果为false。
克隆的副本和原本独立而互不干扰
我们来改变一下原本的属性值,看一下有什么影响
$Person=new Person( "张三");
$Person1=clone $Person;
$Person1-> name='李四' ;
$Person->say();
$Person1->say();
程序运行结果为:
我叫:张三
我叫:李四
由此可知,克隆出来的副本和原本两个对象完全独立而互不干扰。
__clone()方法
如果需要为克隆后的副本对象克隆时重新为成员属性赋值,可以在类中声明一个魔术方法"__clone"
class Person {
public $name;
function __construct($name="" ) {
$this->name =$name;
}
function __clone(){//在对象克隆时自动调用,用来为新对象重新赋值
$this->name ='李四' ;
}
function say() {
echo "我叫:". $this->name ."
" ;
}
}
$Person=new Person( "张三");
$Person1=clone $Person;
$Person->say();
$Person1->say();
?>
程序运行结果为:
我叫:张三
我叫:李四
php程序克隆,php克隆 - freedom - OSCHINA - 中文开源技术交流社区相关推荐
- mysql 源头锁,mysql 使用手册 - 追梦,一个伟大程序员的源头。 - OSCHINA - 中文开源技术交流社区...
在Console中创建procedure的过程 delimiter $$ create procedure name(IN parameter INT) begin ................. ...
- 如何用php写表单中的年月日,php写的日历程序 - adamboy的个人页面 - OSCHINA - 中文开源技术交流社区...
$weekArr = array('Sun','Mon','Tue','Wed','Thu','Fri','Sat'); //获取空格: //echo date("D",strto ...
- php 并发下载文件,PHP 并发下载 - 鸟屁不会的程序猿的个人空间 - OSCHINA - 中文开源技术交流社区...
/** 并发下载,大概方法需要自己调整代码 */ function downloadMulti($download_url,$multi_num=2,$down_file_path='/tmp',$t ...
- mysql外码内码定义_中文编码杂谈(转) - CodeAxe的个人页面 - OSCHINA - 中文开源技术交流社区...
编码问题的例子 在windows自带的notepad(记事本)程序中输入"联通"两个字,保存后再次打开,会发现"联通"不见了,代之以"��ͨ" ...
- java 在界面上画一个时钟_编写程序显示一个时钟 - javaCoder的个人页面 - OSCHINA - 中文开源技术交流社区...
编写程序显示一个时钟.示例输出如图所示. 代码: package com.DisplayClock; import javax.swing.*; import java.awt.*; import j ...
- 微信步数C语言程序,获取微信步数 - osc_1v2pb1nt的个人空间 - OSCHINA - 中文开源技术交流社区...
const util = require('../../utils/util.js') Page({ /** * 页面的初始数据 */ data: { runData:[], }, /** * 生命周 ...
- 卡券php小程序,微信小程序领取卡券 - osc_88a08cel的个人空间 - OSCHINA - 中文开源技术交流社区...
微信小程序领取卡券 标签(空格分隔): php 开发前需要准备的工作 1 小程序和公众号要有绑定 2 小程序和该公众号要绑定到同一个开发平台下 [https://open.weixin.qq.com/ ...
- java实现一个跳转结构程序,Java程序控制结构 - osc_12yjz2ym的个人空间 - OSCHINA - 中文开源技术交流社区...
一.分支结构 概念:程序从两条或多条路径中选择一条去执行,这种结构称为分支结构 1. if结构 特点: ① 条件表达式的形式可以为: boolean的变量 boolean变量的赋值 关系表达式 逻辑表 ...
- php 小程序 运动步数_小程序同步微信步数 - xiangqian1的个人空间 - OSCHINA - 中文开源技术交流社区...
小程序获取微信运动步数,咱们看文档:https://developers.weixin.qq.com/miniprogram/dev/api/open-api/werun/wx.getWeRunDat ...
最新文章
- 如何提升你的能力?给年轻程序员的几条建议
- R语言数据包自带数据集之survival包的colon数据集字段解释、数据导入实战
- python 报错 TypeError: ‘int‘ object is not subscriptable 解决方法
- FCKeditor 2.6 精简版
- python中readline的用法_python中readline的用法
- 四、深入elasticsearch中文搜索
- 用哈希桶实现错位字组的分类(Group Anagrams)
- java 重启tomcat_linux下重启tomcat的命令
- 构建嵌入式linux系统_用于构建嵌入式Linux系统的4种工具
- 2018江苏冬令营5 交换矩阵
- 面试—每日一题(2)
- Python[8] :paramiko模块多进程批量管理主机
- c语言控制台不退出程序,怎样可以屏蔽控制台程序的关闭按钮
- linux apache支持ipv6,如何在Nginx和Apache中启用IPv6?
- nginx-配置记录
- 拯救者Y9000P+因特尔11代+3060Ubuntu驱动安装
- 渥太华大学计算机科学COOP,渥太华大学专业哪个好
- HTTP的options方法作用
- 迈成专转本三毛计算机,念念不忘,必有回响【迈成专转本学员分享】
- excel启用宏在哪里_Excel 2010在不启用的情况下运行宏
热门文章
- 【本科生科研入门】如何整理个人大学生涯的成果?
- 利用Matlab设计滤波器(FDAT) .
- 移植u-boot-1.3.4到GT2440(第二版2.0)
- STM32+ESP8266+MQTT微信小程序SoftAP一键配网接入腾讯物联网平台
- 2011推荐系统论坛游记:爱的反义词不是恨
- python数据的存储结构是指_python数据结构
- 高中信息技术c语言编程题,高中信息技术招聘C语言编程题精选.doc
- ipv6地址概述——了解ipv6与ipv4不同
- 乘法逆元 java_java写的三个求乘法逆元的算法
- webERP的深入浅出系列——1 基础数据准备初始化