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 相关文章推荐
php5新改动之短标记启用方法
Sep 11 PHP
Zend 输出产生XML解析错误
Mar 03 PHP
用php随机生成福彩双色球号码的2种方法
Feb 04 PHP
PHP 伪静态技术原理以及突破原理实现介绍
Jul 12 PHP
php header功能的使用
Oct 28 PHP
PHP中捕获超时事件的方法实例
Feb 12 PHP
thinkphp3.2中Lite文件替换框架入口文件或应用入口文件的方法
May 21 PHP
Zend Framework教程之视图组件Zend_View用法详解
Mar 05 PHP
php将文件夹打包成zip文件的简单实现方法
Oct 04 PHP
php 读取文件夹下所有图片、文件的实例
Oct 17 PHP
php curl操作API接口类完整示例
May 21 PHP
PHP简单实现图片格式转换(jpg转png,gif转png等)
Oct 30 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 echo, print, print_r, sprintf, var_dump, var_expor的使用区别
2013/06/20 PHP
php实现Mongodb自定义方式生成自增ID的方法
2015/03/23 PHP
XHProf报告字段含义的解析
2016/05/17 PHP
PHPExcel简单读取excel文件示例
2016/05/26 PHP
php判断是否连接上网络的方法实例详解
2016/12/14 PHP
基于jquery的获取mouse坐标插件的实现代码
2010/04/01 Javascript
jQuery中jqGrid分页实现代码
2011/11/04 Javascript
基于JQuery的一句话搞定手风琴菜单
2012/09/14 Javascript
一个简单的jQuery计算器实现了连续计算功能
2014/07/21 Javascript
分析了一下JQuery中的extend方法实现原理
2015/02/27 Javascript
javascript回到顶部特效
2016/07/30 Javascript
JavaScript实现类似拉勾网的鼠标移入移出效果
2016/10/27 Javascript
浅析script标签中的defer与async属性
2016/11/30 Javascript
Angularjs过滤器实现动态搜索与排序功能示例
2017/12/13 Javascript
利用Blob进行文件上传的完整步骤
2018/08/02 Javascript
使用JavaScript破解web
2018/09/28 Javascript
浅谈Express.js解析Post数据类型的正确姿势
2019/05/30 Javascript
微信小程序实现左侧滑栏过程解析
2019/08/26 Javascript
浅谈监听单选框radio改变事件(和layui中单选按钮改变事件)
2019/09/10 Javascript
JavaScript中的this妙用实例分析
2020/05/09 Javascript
javascript canvas时钟模拟器
2020/07/13 Javascript
Javascript call及apply应用场景及实例
2020/08/26 Javascript
[03:28]2014DOTA2国际邀请赛 走近EG战队天才中单Arteezy
2014/07/12 DOTA
详解Python 序列化Serialize 和 反序列化Deserialize
2017/08/20 Python
Python类的继承用法示例
2019/01/31 Python
Python中*args和**kwargs的区别详解
2019/09/17 Python
使用 Python 写一个简易的抽奖程序
2019/12/08 Python
纯CSS3实现鼠标悬停提示气泡效果
2014/02/28 HTML / CSS
CSS3实现水平居中、垂直居中、水平垂直居中的实例代码
2020/02/27 HTML / CSS
ASOS英国官网:英国在线时装和化妆品零售商
2017/05/19 全球购物
思想品德课教学反思
2014/02/10 职场文书
销售总经理岗位职责
2014/03/15 职场文书
社区义诊活动总结
2014/04/30 职场文书
党的群众路线教育实践活动查摆问题自查报告
2014/10/10 职场文书
禁毒主题班会教案
2015/08/14 职场文书
python 常用的异步框架汇总整理
2021/06/18 Python