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 读取shell管道传输过来的内容
Mar 01 PHP
PHP 开发环境配置(Zend Studio)
Apr 28 PHP
Drupal 添加模块出现莫名其妙的错误的解决方法(往往出现在模块较多时)
Apr 18 PHP
PHP中实现中文字符进制转换原理分析
Dec 06 PHP
探讨:如何使用PhpDocumentor生成文档
Jun 25 PHP
PHP数组相关函数汇总
Mar 24 PHP
54个提高PHP程序运行效率的方法
Jul 19 PHP
Yii使用技巧大汇总
Dec 29 PHP
PHP常用字符串操作函数实例总结(trim、nl2br、addcslashes、uudecode、md5等)
Jan 09 PHP
PHP-X系列教程之内置函数的使用示例
Oct 16 PHP
wordpress自定义标签云与随机获取标签的方法详解
Mar 22 PHP
php设计模式之备忘模式分析【星际争霸游戏案例】
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
十大催泪虐心动漫电影,有几部你还没看
2020/03/04 日漫
PHP实现的权重算法示例【可用于游戏根据权限来随机物品】
2019/02/15 PHP
JavaScript 拖拉缩放效果
2008/12/10 Javascript
在线编辑器中换行与内容自动提取
2009/04/24 Javascript
javascript 日期时间函数(经典+完善+实用)
2009/05/27 Javascript
Jquery Validation插件防止重复提交表单的解决方法
2010/03/05 Javascript
2010年最佳jQuery插件整理
2010/12/06 Javascript
javascript针对DOM的应用分析(二)
2012/04/15 Javascript
BootStrap的弹出框(Popover)支持鼠标移到弹出层上弹窗层不隐藏的原因及解决办法
2016/04/03 Javascript
谈谈JavaScript数组常用方法总结
2017/01/24 Javascript
javascript 中的try catch应用总结
2017/04/01 Javascript
详解Vue2中组件间通信的解决全方案
2017/07/28 Javascript
vue-cli 构建骨架屏的方法示例
2018/11/08 Javascript
原生js实现的移动端可拖动进度条插件功能详解
2019/08/15 Javascript
星球大战与Python之间的那些事
2016/01/07 Python
Python基于socket实现简单的即时通讯功能示例
2018/01/16 Python
pandas获取groupby分组里最大值所在的行方法
2018/04/20 Python
python 自动批量打开网页的示例
2019/02/21 Python
给 TensorFlow 变量进行赋值的方式
2020/02/10 Python
python 项目目录结构设置
2020/02/14 Python
python实现用户名密码校验
2020/03/18 Python
WoolOvers澳洲官方网站:英国针织服装公司
2018/05/13 全球购物
Melissa鞋英国官方网站:Nonnon
2019/05/01 全球购物
瑞典耳机品牌:URBANISTA
2019/12/03 全球购物
编写类String 的构造函数、析构函数和赋值函数
2012/09/09 面试题
实习单位推荐信范文
2013/11/27 职场文书
财务管理职业生涯规划范文
2013/12/27 职场文书
获奖的大学生创业计划书
2014/01/05 职场文书
大学旷课检讨书
2014/01/28 职场文书
护士毕业生自荐信
2014/02/07 职场文书
班组建设经验交流材料
2014/05/12 职场文书
关于运动会的口号
2014/06/07 职场文书
2014年公务员退休工资改革方案
2014/10/01 职场文书
导游词之广东佛山(南风古灶)
2019/09/24 职场文书
MySQL系列之四 SQL语法
2021/07/02 MySQL
在vue中import()语法不能传入变量的问题及解决
2022/04/01 Vue.js