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生成静态页面详解
Dec 05 PHP
PHP调用Twitter的RSS的实现代码
Mar 10 PHP
php HtmlReplace输入过滤安全函数
Jul 03 PHP
php中json_decode()和json_encode()的使用方法
Jun 04 PHP
php批量删除数据库下指定前缀的表以prefix_为例
Aug 24 PHP
php cookie中点号(句号)自动转为下划线问题
Oct 21 PHP
简单解决新浪SAE无法上传文件的问题
May 13 PHP
Joomla语言翻译类Jtext用法分析
May 05 PHP
Netbeans 8.2将支持PHP7 更精彩
Jun 13 PHP
yii2 commands模式以及配置crontab定时任务的方法
Aug 19 PHP
PHP yield关键字功能与用法分析
Jan 03 PHP
PHP 观察者模式深入理解与应用分析
Sep 25 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生成扇形比例图实例
2013/11/06 PHP
PHP代码实现表单数据验证类
2015/07/28 PHP
详解PHP的Yii框架中扩展的安装与使用
2016/04/01 PHP
Yii 2.0如何使用页面缓存方法示例
2017/05/23 PHP
javascript下操作css的float属性的特殊写法
2007/08/22 Javascript
JavaScript使用二分查找算法在数组中查找数据的方法
2015/04/07 Javascript
jQuery带时间的日期控件代码分享
2015/08/26 Javascript
实例详解jQuery Mockjax 插件模拟 Ajax 请求
2016/01/12 Javascript
AngualrJS中每次$http请求时的一个遮罩层Directive
2016/01/26 Javascript
Bootstrap组件系列之福利篇几款好用的组件(推荐)
2016/06/23 Javascript
jQuery事件绑定用法详解
2016/09/08 Javascript
jQuery 获取遍历获取table中每一个tr中的第一个td的方法
2016/10/05 Javascript
仿iframe效果Aajx文件上传实例
2016/11/18 Javascript
利用jqprint插件打印页面内容的实现方法
2018/01/09 Javascript
JavaScript 正则命名分组【推荐】
2018/06/07 Javascript
详解vue中组件参数
2018/07/09 Javascript
微信小程序去除左上角返回键的实现方法
2020/03/06 Javascript
Quasar Input:type=&quot;number&quot; 去掉上下小箭头 实现加减按钮样式功能
2020/04/09 Javascript
JavaScript经典案例之简易计算器
2020/08/24 Javascript
[05:31]干嘛呢兄弟!DOTA2 TI9语音轮盘部分出处
2019/05/14 DOTA
Python set集合类型操作总结
2014/11/07 Python
Python连接DB2数据库
2016/08/27 Python
python中int与str互转方法
2018/07/02 Python
Pycharm更换python解释器的方法
2018/10/29 Python
python交互模式基础知识点学习
2020/06/18 Python
Python爬虫之Selenium下拉框处理的实现
2020/12/04 Python
个人简历自我评价范文
2014/02/04 职场文书
大学生职业生涯规划书参考模板
2014/03/05 职场文书
《庐山的云雾》教学反思
2014/04/22 职场文书
活动总结的格式
2014/05/07 职场文书
信访工作经验交流材料
2014/05/23 职场文书
2014年学校法制宣传日活动总结
2014/11/01 职场文书
党支部先进事迹材料
2014/12/24 职场文书
公司市场部岗位职责
2015/04/15 职场文书
晶体管来复再生式二管收音机
2021/04/22 无线电
带你了解Java中的ForkJoin
2022/04/28 Java/Android