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 CURL获取邮箱地址的详解
Jun 03 PHP
关于crontab的使用详解
Jun 24 PHP
php实现的百度搜索某地天气的小偷代码
Apr 23 PHP
php5.2以下版本无json_decode函数的解决方法
May 25 PHP
php根据某字段对多维数组进行排序的方法
Mar 07 PHP
php生成rss类用法实例
Apr 14 PHP
php使用ZipArchive函数实现文件的压缩与解压缩
Oct 27 PHP
php上传图片类及用法示例
May 11 PHP
多个Laravel项目如何共用migrations详解
Sep 25 PHP
ThinkPHP框架下微信支付功能总结踩坑笔记
Apr 10 PHP
YII框架http缓存操作示例
Apr 29 PHP
Laravel解决nesting level错误和隐藏index.php的问题
Oct 12 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
php下一个阿拉伯数字转中文数字的函数
2007/07/16 PHP
处理php自动反斜杠的函数代码
2010/01/05 PHP
使用Codeigniter重写insert的方法(推荐)
2017/03/23 PHP
php解压缩zip和rar压缩包文件的方法
2019/07/10 PHP
jQuery Validation实例代码 让验证变得如此容易
2010/10/18 Javascript
Javascript继承机制的设计思想分享
2011/08/28 Javascript
Javascript 浮点运算精度问题分析与解决
2014/03/26 Javascript
AngularJS中的过滤器使用详解
2015/06/16 Javascript
js+css实现回到顶部按钮(back to top)
2016/03/02 Javascript
jQuery中Ajax全局事件引用方式及各个事件(全局/局部)执行顺序
2016/06/02 Javascript
jquery插件开发之选项卡制作详解
2017/08/30 jQuery
JS实现简单表格排序操作示例
2017/10/07 Javascript
微信小程序实现action-sheet弹出底部菜单功能【附源码下载】
2017/12/09 Javascript
react-native使用leanclound消息推送的方法
2018/08/06 Javascript
如何使用VuePress搭建一个类型element ui文档
2019/02/14 Javascript
vue-froala-wysiwyg 富文本编辑器功能
2019/09/19 Javascript
详谈vue中router-link和传统a链接的区别
2020/07/22 Javascript
[00:36]DOTA2上海特级锦标赛 Archon战队宣传片
2016/03/04 DOTA
python编程实现希尔排序
2017/04/13 Python
解决使用pycharm提交代码时冲突之后文件丢失找回的方法
2018/08/05 Python
python 批量修改 labelImg 生成的xml文件的方法
2019/09/09 Python
python创建学生管理系统
2019/11/22 Python
Python3监控windows,linux系统的CPU、硬盘、内存使用率和各个端口的开启情况详细代码实例
2020/03/18 Python
Pytest如何使用skip跳过执行测试
2020/08/13 Python
CSS3实现可翻转的hover效果
2018/05/23 HTML / CSS
HTML5 Canvas 起步(2) - 路径
2009/05/12 HTML / CSS
银行个人求职自荐信范文
2013/12/16 职场文书
大课间活动制度
2014/01/18 职场文书
太太口服液广告词
2014/03/20 职场文书
老干部工作汇报材料
2014/10/28 职场文书
民事起诉书范本
2015/05/19 职场文书
2016年感恩母亲节活动总结
2016/04/01 职场文书
uniapp开发小程序的经验总结
2021/04/08 Javascript
go语言使用Casbin实现角色的权限控制
2021/06/26 Golang
Python中的pprint模块
2021/11/27 Python
vue实现input输入模糊查询的三种方式
2022/08/14 Vue.js