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 根据IP地址控制访问的代码
Apr 22 PHP
解析用PHP实现var_export的详细介绍
Jun 20 PHP
php使用curl检测网页是否被百度收录的示例分享
Jan 31 PHP
PDO防注入原理分析以及使用PDO的注意事项总结
Oct 23 PHP
PHP保存带BOM文件的方法
Feb 12 PHP
php获取字符串中各个字符出现次数的方法
Feb 23 PHP
php删除文本文件中重复行的方法
Apr 28 PHP
PHP使用CURL实现多线程抓取网页
Apr 30 PHP
常用的php图片处理类(水印、等比缩放、固定高宽)分享
Jun 19 PHP
PHP session会话操作技巧小结
Sep 27 PHP
PHP插件PHPMailer发送邮件功能
Feb 28 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 curl模拟浏览器采集阿里巴巴的实现代码
2011/04/20 PHP
ThinkPHP采用原生query实现关联查询left join实例
2014/12/02 PHP
PHPCrawl爬虫库实现抓取酷狗歌单的方法示例
2017/12/21 PHP
laravel框架关于搜索功能的实现
2018/03/15 PHP
jquery 框架使用教程 AJAX篇
2009/10/11 Javascript
网页中的图片的处理方法与代码
2009/11/26 Javascript
跨域请求之jQuery的ajax jsonp的使用解惑
2011/10/09 Javascript
jquery在项目中做复选框时遇到的一些问题笔记
2013/11/17 Javascript
JavaScript数组常用操作技巧汇总
2014/11/17 Javascript
javascript实现3D变换的立体圆圈实例
2015/08/06 Javascript
实例详解jQuery结合GridView控件的使用方法
2016/01/04 Javascript
jquery ezUI 双击行记录弹窗查看明细的实现方法
2016/06/01 Javascript
Nodejs中使用phantom将html转为pdf或图片格式的方法
2017/09/18 NodeJs
JS实现点击下拉菜单把选择的内容同步到input输入框内的实例
2018/01/23 Javascript
在vue项目中,使用axios跨域处理
2018/03/07 Javascript
JavaScript 正则命名分组【推荐】
2018/06/07 Javascript
微信小程序调用天气接口并且渲染在页面过程详解
2019/06/24 Javascript
bootstrap-table+treegrid实现树形表格
2019/07/26 Javascript
在vue中使用vuex,修改state的值示例
2019/11/08 Javascript
ES6 class类链式继承,实例化及react super(props)原理详解
2020/02/15 Javascript
微信小程序开发之获取用户手机号码(php接口解密)
2020/05/17 Javascript
vue中组件通信详解(父子组件, 爷孙组件, 兄弟组件)
2020/07/27 Javascript
html+vue.js 实现漂亮分页功能可兼容IE
2020/11/07 Javascript
Python编程实现粒子群算法(PSO)详解
2017/11/13 Python
基于python requests库中的代理实例讲解
2018/05/07 Python
Python用for循环实现九九乘法表
2018/05/31 Python
Linux下python3.6.1环境配置教程
2018/09/26 Python
详解Django的CSRF认证实现
2018/10/09 Python
python添加菜单图文讲解
2019/06/04 Python
使用Python实现牛顿法求极值
2020/02/10 Python
html5 初试 indexedDB(推荐)
2016/07/21 HTML / CSS
西班牙用户之间买卖视频游戏的平台:Wakkap
2020/03/21 全球购物
监督检查工作方案
2014/05/28 职场文书
2014幼儿教师个人工作总结
2014/12/03 职场文书
2015秋季新学期开学寄语
2015/05/28 职场文书
2015年成本会计工作总结
2015/10/14 职场文书