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中的字符串函数
Oct 09 PHP
PHP下MAIL的另一解决方案
Oct 09 PHP
PHP原理之异常机制深入分析
Aug 08 PHP
php中echo()和print()、require()和include()等易混淆函数的区别
Feb 22 PHP
PHP编码转换函数 自动转换字符集支持数组转换
Dec 16 PHP
用Php编写注册后Email激活验证的实例代码
Mar 11 PHP
PHP文件锁函数flock()详细介绍
Nov 18 PHP
Yii入门教程之目录结构、入口文件及路由设置
Nov 25 PHP
php简单的上传类分享
May 15 PHP
PHP 搜索查询功能实现
Nov 29 PHP
老生常谈PHP位运算的用途
Mar 12 PHP
基于swoole实现多人聊天室
Jun 14 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
简单实现限定phpmyadmin访问ip的方法
2013/03/05 PHP
基于PHP的加载类操作以及其他两种魔术方法的应用实例
2017/08/28 PHP
PHP实现PDO操作mysql存储过程示例
2019/02/13 PHP
如何在centos8自定义目录安装php7.3
2019/11/28 PHP
js 判断浏览器使用的语言示例代码
2014/03/22 Javascript
jQuery中get()方法用法实例
2014/12/27 Javascript
常用的Javascript设计模式小结
2015/12/09 Javascript
jQuery实现的导航下拉菜单效果示例
2016/09/05 Javascript
js获取当前时间(昨天、今天、明天)
2016/11/23 Javascript
浅谈html转义及防止javascript注入攻击的方法
2016/12/04 Javascript
jq checkbox 的全选并ajax传参的实例
2017/04/01 Javascript
javaScript中的空值和假值
2017/12/18 Javascript
js原生方法被覆盖,从新赋值原生的方法
2018/01/02 Javascript
js实现鼠标单击Tab表单切换效果
2018/05/16 Javascript
vue打包的时候自动将px转成rem的操作方法
2018/06/20 Javascript
微信小程序与公众号实现数据互通的方法
2019/07/25 Javascript
js实现简单放大镜效果
2020/03/07 Javascript
JavaScript 常见的继承方式汇总
2020/09/17 Javascript
python改变日志(logging)存放位置的示例
2014/03/27 Python
Python不规范的日期字符串处理类
2014/06/10 Python
python将字符串转换成数组的方法
2015/04/29 Python
完美解决Python2操作中文名文件乱码的问题
2017/01/04 Python
基于python指定包的安装路径方法
2018/10/27 Python
Django uwsgi Nginx 的生产环境部署详解
2019/02/02 Python
利用python计算windows全盘文件md5值的脚本
2019/07/27 Python
python自定义时钟类、定时任务类
2021/02/22 Python
python SocketServer源码深入解读
2019/09/17 Python
Python爬虫实现selenium处理iframe作用域问题
2021/01/27 Python
HTML5 用动画的表现形式装载图像
2016/03/08 HTML / CSS
计算机专业职业规划
2014/02/28 职场文书
实习计划书范文
2015/01/16 职场文书
2016大学生国家助学贷款承诺书
2016/03/25 职场文书
CSS3 制作的书本翻页特效
2021/04/13 HTML / CSS
python spilt()分隔字符串的实现示例
2021/05/21 Python
python中的None与NULL用法说明
2021/05/25 Python
MySQL 全文索引使用指南
2021/05/25 MySQL