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 相关文章推荐
dedecms模板标签代码官方参考
Mar 17 PHP
php adodb连接不同数据库
Mar 19 PHP
编写安全 PHP应用程序的七个习惯深入分析
Jun 08 PHP
wordpress自定义url参数实现路由功能的代码示例
Nov 28 PHP
PHP变量的定义、可变变量、变量引用、销毁方法
Dec 20 PHP
深入理解PHP中的global
Aug 19 PHP
从零开始学YII2框架(六)高级应用程序模板
Aug 20 PHP
百度工程师讲PHP函数的实现原理及性能分析(二)
May 13 PHP
php opendir()列出目录下所有文件的实例代码
Oct 02 PHP
thinkPHP5.0框架URL访问方法详解
Mar 18 PHP
PHP仿tp实现mvc框架基本设计思路与实现方法分析
May 23 PHP
php面试实现反射注入的详细方法
Sep 30 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中判断变量为空的几种方法分享
2013/08/26 PHP
PHP中list方法用法示例
2016/12/01 PHP
PHP中将一个字符串部分字符用星号*替代隐藏的实现代码
2019/09/08 PHP
javascript 一些用法小结
2009/09/11 Javascript
利用javaScript实现点击输入框弹出窗体选择信息
2013/12/11 Javascript
动态读取JSON解析键值对的方法
2014/06/03 Javascript
js使用心得分享
2015/01/13 Javascript
javascript创建动态表单的方法
2015/07/25 Javascript
浅谈JavaScript前端开发的MVC结构与MVVM结构
2016/06/03 Javascript
基于Vue.js实现数字拼图游戏
2016/08/02 Javascript
jQuery扩展实现text提示还能输入多少字节的方法
2016/11/28 Javascript
Angular.Js的自动化测试详解
2016/12/09 Javascript
彻底搞懂JavaScript中的apply和call方法(必看)
2017/09/18 Javascript
Vue添加请求拦截器及vue-resource 拦截器使用
2017/11/23 Javascript
Javascript将图片的绝对路径转换为base64编码的方法
2018/01/11 Javascript
详解使用jQuery.i18n.properties实现js国际化
2018/05/04 jQuery
vue生成文件本地打开查看效果的实例
2018/09/06 Javascript
vue-cli整合vuex的时候,修改actions和mutations,实现热部署的方法
2018/09/19 Javascript
在vue-cli的组件模板里使用font-awesome的两种方法
2018/09/28 Javascript
基于Koa2写个脚手架模拟接口服务的方法
2018/11/27 Javascript
JavaScript中的ES6 Proxy的具体使用
2019/06/16 Javascript
Python使用minidom读写xml的方法
2015/06/03 Python
django js实现部分页面刷新的示例代码
2018/05/28 Python
selenium处理元素定位点击无效问题
2019/06/12 Python
pygame实现打字游戏
2021/02/19 Python
从numpy数组中取出满足条件的元素示例
2019/11/26 Python
Python selenium的基本使用方法分析
2019/12/21 Python
jupyter notebook 调用环境中的Keras或者pytorch教程
2020/04/14 Python
HTML5标签大全
2016/11/23 HTML / CSS
英国旅游额外服务市场领导者:Holiday Extras(机场停车场、酒店、接送等)
2017/10/07 全球购物
消防安全员岗位职责
2014/03/10 职场文书
试用期旷工辞退通知书
2015/04/17 职场文书
居安思危观后感
2015/06/11 职场文书
python控制台打印log输出重复的解决方法
2021/05/14 Python
python实现A*寻路算法
2021/06/13 Python
使用vuex-persistedstate本地存储vuex
2022/04/29 Vue.js