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


Posted in PHP onJanuary 06, 2015

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

<?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程序后的结果如下:

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

我的名字叫:我是复制的张三 性别:男 我的年龄是:20
PHP 相关文章推荐
PHP脚本的10个技巧(6)
Oct 09 PHP
ThinkPHP php 框架学习笔记
Oct 30 PHP
PHP 最大运行时间 max_execution_time修改方法
Mar 08 PHP
php中time()和mktime()方法的区别
Sep 28 PHP
在PHP中使用X-SendFile头让文件下载更快
Jun 01 PHP
ThinkPHP模板Switch标签用法示例
Jun 30 PHP
PHP has encountered a Stack overflow问题解决方法
Nov 03 PHP
深入理解PHP内核(一)
Nov 10 PHP
遍历指定目录,并存储目录内所有文件属性信息的php代码
Oct 28 PHP
PHP fopen函数用法实例讲解
Feb 15 PHP
laravel-admin的多级联动方法
Sep 30 PHP
PHP常用header头定义代码示例汇总
Aug 29 PHP
php缓冲输出实例分析
Jan 05 #PHP
php中fsockopen用法实例
Jan 05 #PHP
php中Socket创建与监听实现方法
Jan 05 #PHP
php实现计数器方法小结
Jan 05 #PHP
php下Memcached入门实例解析
Jan 05 #PHP
ioncube_loader_win_5.2.dll的错误解决方法
Jan 04 #PHP
jQuery+PHP实现的掷色子抽奖游戏实例
Jan 04 #PHP
You might like
历史证明,懒惰才是推动科学发展技术进步的动力
2021/03/02 无线电
深入了解 register_globals (附register_globals=off 网站打不开的解决方法)
2012/06/27 PHP
Yii数据库缓存实例分析
2016/03/29 PHP
自适应高度框架 ----属个人收藏内容
2007/01/22 Javascript
DHTML Slide Show script图片轮换
2008/03/03 Javascript
JQuery与iframe交互实现代码
2009/12/24 Javascript
javascript实现控制浏览器全屏
2015/03/30 Javascript
Javascript中实现String.startsWith和endsWith方法
2015/06/10 Javascript
解决jQuery上传插件Uploadify出现Http Error 302错误的方法
2015/12/18 Javascript
jQuery实现验证码功能
2017/03/17 Javascript
javascript 的变量、作用域和内存问题
2017/04/19 Javascript
BootStrap Fileinput插件和Bootstrap table表格插件相结合实现文件上传、预览、提交的导入Excel数据操作步骤
2017/08/07 Javascript
JavaScript 下载svg图片为png格式
2018/06/21 Javascript
更优雅的微信小程序骨架屏实现详解
2019/08/07 Javascript
js实现石头剪刀布游戏
2020/10/11 Javascript
js实现简单商品筛选功能
2021/02/02 Javascript
Python的消息队列包SnakeMQ使用初探
2016/06/29 Python
python利用正则表达式排除集合中字符的功能示例
2017/10/10 Python
Python3实现的Mysql数据库操作封装类
2018/06/06 Python
Python Django给admin添加Action的方法实例详解
2019/04/29 Python
python sqlite的Row对象操作示例
2019/09/11 Python
使用jupyter Nodebook查看函数或方法的参数以及使用情况
2020/04/14 Python
Python .py生成.pyd文件并打包.exe 的注意事项说明
2021/03/04 Python
css3让div随鼠标移动而抖动起来
2014/02/10 HTML / CSS
国际化的太阳镜及太阳镜配件零售商:Sunglass Hut
2016/07/26 全球购物
对象的序列化(serialization)类是面向流的,应如何将对象写入到随机存取文件中
2015/06/22 面试题
代理商会议邀请函
2014/01/27 职场文书
毕业生如何写自荐信
2014/03/26 职场文书
2015年高一班主任工作总结
2015/05/13 职场文书
入团介绍人意见范文
2015/06/04 职场文书
《玩出了名堂》教学反思
2016/02/17 职场文书
导游词之介休绵山
2019/12/31 职场文书
Python制作一个随机抽奖小工具的实现
2021/07/07 Python
java设计模式--七大原则详解
2021/07/21 Java/Android
Kubernetes关键组件与结构组成介绍
2022/03/31 Servers
vue route新窗口跳转页面并且携带与接收参数
2022/04/10 Vue.js