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中使用全局变量的几种方法
Jun 24 PHP
php 模拟post_验证页面的返回状态(实例讲解)
Oct 28 PHP
PHP四大安全策略
Mar 12 PHP
php像数组一样存取和修改字符串字符
Mar 21 PHP
ThinkPHP模板范围判断输出In标签与Range标签用法详解
Jun 30 PHP
php实现图片等比例缩放代码
Jul 23 PHP
Zend Framework教程之分发器Zend_Controller_Dispatcher用法详解
Mar 07 PHP
ThinkPHP实现的rsa非对称加密类示例
May 29 PHP
php微信公众号开发之图片回复
Oct 20 PHP
Laravel框架基于ajax实现二级联动功能示例
Jan 17 PHP
PDO::errorCode讲解
Jan 28 PHP
PHP引擎php.ini参数优化深入讲解
Mar 24 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
关于我转生变成史莱姆这档事:第二季PV上线,萌王2021年回归
2020/05/06 日漫
解决中英文字符串长度问题函数
2007/01/16 PHP
GBK的页面输出JSON格式的php函数
2010/02/16 PHP
基于php权限分配的实现代码
2013/04/28 PHP
PHP 通过Socket收发十六进制数据的实现代码
2013/08/16 PHP
图解找出PHP配置文件php.ini的路径的方法
2014/08/20 PHP
一实用的实现table排序的Javascript类库
2007/09/12 Javascript
jQuery的实现原理的模拟代码 -1 核心部分
2010/08/01 Javascript
JQuery表格内容过滤的实现方法
2013/07/05 Javascript
AngularJS的表单使用详解
2015/06/17 Javascript
javascript电商网站抢购倒计时效果实现
2015/11/19 Javascript
浅谈jQuery this和$(this)的区别及获取$(this)子元素对象的方法
2016/11/29 Javascript
jQuery实现页码跳转式动态数据分页
2017/12/31 jQuery
vue实现点击当前标签高亮效果【推荐】
2018/06/22 Javascript
javascript实现导航栏分页效果
2019/06/27 Javascript
JavaScript判断浏览器版本的方法
2019/11/03 Javascript
javascript实现滚动条效果
2020/03/24 Javascript
Vue 解决在element中使用$notify在提示信息中换行问题
2020/11/11 Javascript
编写Python脚本批量下载DesktopNexus壁纸的教程
2015/05/06 Python
详解python中requirements.txt的一切
2017/03/03 Python
pycharm远程调试openstack代码
2017/11/21 Python
Python中Numpy ndarray的使用详解
2019/05/24 Python
django美化后台django-suit的安装配置操作
2020/07/12 Python
如何用Python绘制3D柱形图
2020/09/16 Python
CSS3 实现弹幕的示例代码
2017/08/07 HTML / CSS
学校采购员岗位职责
2014/01/02 职场文书
入股协议书
2014/04/14 职场文书
竞选卫生委员演讲稿
2014/04/28 职场文书
2015年毕业生自我鉴定模板
2014/09/19 职场文书
信访维稳工作汇报
2014/10/27 职场文书
顶岗实习协议书
2015/01/29 职场文书
小学生安全教育主题班会
2015/08/12 职场文书
干货分享:推荐信写作技巧!
2019/06/21 职场文书
python实现批量提取指定文件夹下同类型文件
2021/04/05 Python
Python中os模块的简单使用及重命名操作
2021/04/17 Python
如何利用Python实现n*n螺旋矩阵
2022/01/18 Python