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 相关文章推荐
输出控制类
Oct 09 PHP
PHP利用REFERER根居访问来地址进行页面跳转
Sep 28 PHP
CI框架中集成CKEditor编辑器的教程
Jun 09 PHP
php实现通过ftp上传文件
Jun 19 PHP
非常全面的php日期时间运算汇总
Nov 04 PHP
CentOS下与Apache连接的PHP多版本共存方案实现详解
Dec 19 PHP
PHP下SSL加密解密、验证、签名方法(很简单)
Jun 28 PHP
php版阿里大于(阿里大鱼)短信发送实例详解
Nov 30 PHP
浅谈PHP发送HTTP请求的几种方式
Jul 25 PHP
基于swoole实现多人聊天室
Jun 14 PHP
Laravel关系模型指定条件查询方法
Oct 10 PHP
php远程请求CURL案例(爬虫、保存登录状态)
Apr 01 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 str_pad 函数使用详解
2009/01/13 PHP
解析php中mysql_connect与mysql_pconncet的区别详解
2013/05/15 PHP
php gd等比例缩放压缩图片函数
2016/06/12 PHP
Discuz论坛密码与密保加密规则
2016/12/19 PHP
PHP的自定义模板引擎
2017/03/24 PHP
PHP实现的分页类定义与用法示例
2017/07/05 PHP
PHP实现微信商户支付企业付款到零钱功能
2018/09/30 PHP
Laravel中10个有用的用法小结
2019/05/06 PHP
Laravel统计一段时间间隔的数据方法
2019/10/09 PHP
Javascript 对象的解释
2008/11/24 Javascript
js 实现在离开页面时提醒未保存的信息(减少用户重复操作)
2013/01/16 Javascript
js判断手机端(Android手机还是iPhone手机)
2015/07/22 Javascript
JS实现加载和读取XML文件的方法详解
2017/04/24 Javascript
sharp.js安装过程中遇到的问题总结
2020/04/02 Javascript
vue中移动端调取本地的复制的文本方式
2020/07/18 Javascript
js和jquery判断数据类型的4种方法总结
2020/08/28 jQuery
详解Python多线程Selenium跨浏览器测试
2017/04/01 Python
python实现Decorator模式实例代码
2018/02/09 Python
python 接口测试response返回数据对比的方法
2018/02/11 Python
Python socket实现多对多全双工通信的方法
2019/02/13 Python
安装docker-compose的两种最简方法
2019/07/30 Python
python获取Pandas列名的几种方法
2019/08/07 Python
Python hashlib常见摘要算法详解
2020/01/13 Python
Python切割图片成九宫格的示例代码
2020/03/10 Python
Python爬取阿拉丁统计信息过程图解
2020/05/12 Python
python中绕过反爬虫的方法总结
2020/11/25 Python
记一次高分屏下canvas模糊问题
2020/02/17 HTML / CSS
Html5 webview元素定位工具的实现
2020/08/07 HTML / CSS
MCM英国官网:奢侈皮具制品
2017/04/18 全球购物
KIKO美国官网:意大利的平价彩妆品牌
2017/05/16 全球购物
在Ajax应用中信息是如何在浏览器和服务器之间传递的
2016/05/31 面试题
Ajax和javascript的区别
2013/07/20 面试题
应届生服装设计自我评价
2013/09/20 职场文书
2015年清明节扫墓演讲稿
2015/03/18 职场文书
用Python将库打包发布到pypi
2021/04/13 Python
MySql 8.0及对应驱动包匹配的注意点说明
2021/06/23 MySQL