博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
PHP中的$this和$that指针使用案例
阅读量:6281 次
发布时间:2019-06-22

本文共 1131 字,大约阅读时间需要 3 分钟。

PHP5中定义了一个特殊的方法名“__clone()”方法,是在对象克隆时自动调用的方法,用“__clone()”方法将建立一个与原对象拥有相同属性和方法的对象,如果想在克隆后改变原对象的内容,需要在__clone()中重写原本的属性和方法,“__clone()”方法可以没有参数,它自动包含$this和$that两个指针,$this指向复本,而$that指向原本,具体实例如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
<?php
class 
Person {
    
// 下面是人的成员属性
    
var 
$name
// 人的名字
    
var 
$sex
// 人的性别
    
var 
$age
// 人的年龄
              
// 定义一个构造方法参数为属性姓名$name、性别$sex 和年龄$age 进行赋值
              
// function __construct($name="", $sex="",$age="")
    
function 
__construct(
$name
$sex
$age
) {
        
$this
->name = 
$name
;
        
$this
->sex = 
$sex
;
        
$this
->age = 
$age
;
    
}
    
// 这个人可以说话的方法, 说出自己的属性
    
function 
say() {
        
echo 
"我的名字叫:" 
$this
->name . 
" 性别:" 
$this
->sex . 
" 我的年龄是:" 
$this
        
->age . 
"<br>"
;
    
}
    
// 对象克隆时自动调用的方法, 如果想在克隆后改变原对象的内容,需要在__clone()中重写原来的属性和方法。
    
function 
__clone() {
        
// $this 指的复本p2, 而$that 是指向原本p1,这样就在本方法里,改变了复本的属性。
        
$this
->name = 
"我是复制的张三$that->name"
;
        
// $this->age = 30;
    
}
}
$p1 
new 
Person ( 
"张三"
"男"
, 20 );
$p2 
clone 
$p1
;
$p1
->say ();
$p2
->say ();
?>

成功运行此PHP程序后的结果如下:

1
2
我的名字叫:张三 性别:男 我的年龄是:20
我的名字叫:我是复制的张三 性别:男 我的年龄是:20
本文转自 抚琴煮酒 51CTO博客,原文链接:http://blog.51cto.com/yuhongchun/1417280,如需转载请自行联系原作者
你可能感兴趣的文章
Spring Boot Unregistering JMX-exposed beans on shutdown
查看>>
poi 导入导出的api说明(大全)
查看>>
Mono for Android 优势与劣势
查看>>
将图片转成base64字符串并在JSP页面显示的Java代码
查看>>
js 面试题
查看>>
sqoop数据迁移(基于Hadoop和关系数据库服务器之间传送数据)
查看>>
腾讯云下安装 nodejs + 实现 Nginx 反向代理
查看>>
Javascript 中的 Array 操作
查看>>
java中包容易出现的错误及权限问题
查看>>
AngularJS之初级Route【一】(六)
查看>>
服务器硬件问题整理的一点总结
查看>>
SAP S/4HANA Cloud: Revolutionizing the Next Generation of Cloud ERP
查看>>
Mellanox公司计划利用系统芯片提升存储产品速度
查看>>
白帽子守护网络安全,高薪酬成大学生就业首选!
查看>>
ARM想将芯片装进人类大脑 降低能耗是一大挑战
查看>>
Oracle数据库的备份方法
查看>>
Selenium 自动登录考勤系统
查看>>
关于如何以编程的方式执行TestNG
查看>>
智能照明造福千家万户 家居智能不再是梦
查看>>
物联网如何跳出“看起来很美”?
查看>>