PHP中$this和$that指针使用实例

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

代码如下:

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 . "

";

}

// 对象克隆时自动调用的方法, 如果想在克隆后改变原对象的内容,需要在__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程序后的结果如下:

代码如下:

我的名字叫:张三 性别:男 我的年龄是:20

我的名字叫:我是复制的张三 性别:男 我的年龄是:20

本文原创发布php中文网,转载请注明出处,感谢您的尊重!

php $that,PHP中$this和$that指针使用实例相关推荐

  1. c语言二级指针有什么作用,C语言中二级指针的实例详解

    C语言中二级指针的实例详解 C语言中二级指针的实例详解 用图说明 示例代码: #include int main(int argc, const char * argv[]) { // int a = ...

  2. VC++ 从View类获取各种指针编程实例

    新建一个多文档工程:名为GetPtrDemo: 在视类OnDraw函数,获取其他类指针:然后进行一些操作: 首先获取应用程序类指针:可以获取到:然后利用它输出程序名: CGetPtrDemoApp* ...

  3. C语言数组指针和指针数组实例演示

    一.数组指针 1.简介 数组指针就是指向数组的指针. 定义方式:int (*p)[len] = NULL; 示例: #include <stdio.h> int main() {int a ...

  4. 指针函数和函数指针(附实例详解)

    今天遇到指针函数和函数指针的问题,就直接把它彻底地分析了一遍,总结如下: 指针函数与函数指针表示方法的不同,千万不要混淆.最简单的辨别方式就是看函数名前面的指针*号有没有被括号()包含,如果被包含就是 ...

  5. 关于C语言中的数组指针、指针数组以及二级指针

    概念解释 数组指针:首先它是一个指针,它指向一个数组,即指向数组的指针:在32 位系统下永远是占4 个字节,至于它指向的数组占多少字节,不知道.数组指针指向的是数组中的一个具体元素,而不是整个数组,所 ...

  6. c语言中的字节和元素,C语言指向数组元素的指针

    指向数组元素的指针和运算法则 所谓指向数组元素的指针,其本质还是变量的指针.因为数组中的每个元素,其实都可以直接看成是一个变量,所以指向数组元素的指针,也就是变量的指针. 指向数组元素的指针不难,但很 ...

  7. C++指针与地址详解 _0

    指针的概念 ◆ 1."存储器"的概念 文件柜–>文件柜上的抽屉–>抽屉上的编号 对应于: 存储器-–>存储单元-–>存储单元的地址 ◆ 2.存储器的使用 1 ...

  8. C#指针使用学习总结

    C#中指针的使用 http://www.cnblogs.com/caibq/archive/2011/09/11/Cai_Yao.html 在C#中,有时候希望通过指针来操作内存,这样可以提高效率.我 ...

  9. go reflect 取指针_Go的方法集详解

    女主宣言 Go语言以其本身具有的高并发特性,在云计算开发中,得到了广泛的应用,也深受广大开发者的欢迎.但是大家对go语言真的了解了么?本文作者经过对go语言的多年实践应用,现对go语言中的方法集进行了 ...

最新文章

  1. java url 拦截_Spring mvc设置某些url不被interceptor拦截器拦截的方法
  2. 基于Python的BPSK音频的波形和频谱
  3. django可以生成exe文件吗_把 Django 程序打包为 exe 可执行文件
  4. zabbix2.4域用户配置
  5. Cloud for Customer Restriction and Exclusion Product Lists
  6. 不同用户同时并发测压_程序猿学GO:并发
  7. idea2019打卡没多久就闪退_IDEA 2020.1打开时闪退的问题及解决方法(完美解决方法)...
  8. HTML5托拽上传(XMLHttpRequest和Google Gears)
  9. Java学习系列及数据结构博客全目录
  10. MySQL中数据表的查操作
  11. carplay是否可以用安卓系统_Microsoft Teams正在支持CarPlay通话,我还是期待微信支持CarPlay...
  12. linux(计划任务)
  13. STAMP:扩增子、宏基因组统计分析神器(中文帮助文档)
  14. 直播视频分辨率码率参考设置
  15. requests 模块获取免费的代理并检测代理 IP 是否有效!
  16. 《人机交互技术》第二章 感知和认知基础
  17. [caffe] Long-term Recurrent Convolutional Networks
  18. TRIZ系列-创新原理-14~15-曲面化原理和动态性原理
  19. Groovy语言 Grails框架入门
  20. What are default and maximum values of dev_loss_tmo in Red Hat Enterprise Linux 6

热门文章

  1. hdu 1518 dfs+剪枝
  2. 【报告分享】2022电商行业趋势报告.pdf
  3. 上百篇论文概览『负采样方法』的前世今生
  4. 阿里广告技术最新突破!全链路联动——面向最终目标的全链路一致性建模
  5. python session模块_Python requests模块session代码实例
  6. 小白学python3实战做量化分析平台_Python3 量化分析从小白到破产笔记
  7. java http soap_在Spring中发布SOAP HTTP Webservice - Java杂家 - Blo...
  8. 联想打印机 linux驱动怎么安装步骤,如何在MAC系统下安装打印机驱动
  9. Leetcode每日一题:197.rising-temperature(上升的温度)
  10. 数学建模7 多元线性回归分析