php面向对象全攻略 (三)特殊的引用“$this”的使用


Posted in PHP onSeptember 30, 2009

7.特殊的引用“$this”的使用
现在我们知道了如何访问对象中的成员,是通过“对象->成员”的方式访问的,这是在对
象的外部去访问对象中成员的形式,那么如果我想在对象的内部,让对象里的方法访问本对
象的属性,或是对象中的方法去调用本对象的其它方法这时我们怎么办?因为对象里面的所
有的成员都要用对象来调用,包括对象的内部成员之间的调用,所以在PHP 里面给我提供了
一个本对象的引用$this,每个对象里面都有一个对象的引用$this 来代表这个对象,完成对象
内部成员的调用,this 的本意就是“这个”的意思,上面的实例里面,我们实例化三个实例
对象$P1、$P2、$P3,这三个对象里面各自存在一个$this 分别代表对象$p1、$p2、$p3。
通过上图我们可以看到,$this 就是对象内部代表这个对象的引用,在对象内部和调用本
对象的成员和对象外部调用对象的成员所使用的方式是一样的。
$this->属性$this->name; $this->age; $this->sex;
$this->方法$this->say(); $this->run();
修改一下上面的实例,让每个人都说出自己的名字,性别和年龄:
代码片段

<?php 
class Person{ 
//下面是人的成员属性 
var $name; //人的名字 
var $sex; //人的性别 
var $age; //人的年龄 
//下面是人的成员方法 
function say(){//这个人可以说话的方法 
echo "我的名字叫:".$this->name." 性别:".$this->sex." 我的年龄是:".$this->age."<br>"; 
} 
function run(){ //这个人可以走路的方法 
echo "这个人在走路"; 
} 
} 
$p1=new Person(); //创建实例对象$p1 
$p2=new Person(); //创建实例对象$p2 
$p3=new Person(); //创建实例对象$p3 
//下面三行是给$p1对象属性赋值 
$p1->name="张三"; 
$p1->sex="男"; 
$p1->age=20; 
//下面访问$p1对象中的说话方法 
$p1->say(); 
//下面三行是给$p2对象属性赋值 
$p2->name="李四"; 
$p2->sex="女"; 
$p2->age=30; 
//下面访问$p2对象中的说话方法 
$p2->say(); 
//下面三行是给$p3对象属性赋值 
$p3->name="王五"; 
$p3->sex="男"; 
$p3->age=40; 
//下面访问$p3对象中的说话方法 
$p3->say(); 
?>

输出结果
我的名字叫:张三性别:男我的年龄是:20
我的名字叫:李四性别:女我的年龄是:30
我的名字叫:王五性别:男我的年龄是:40
分析一下这个方法:
代码片段
function say(){ //这个人可以说话的方法
echo "我的名字叫:".$this->name." 性别:".$this->sex." 我的年龄是:".$this->age."<br>";
}
在$p1、$p2 和$p3 这三个对象中都有say()这个方法,$this 分别代表这三个对象,调用相应的属性,打印出属性的值,这就是在对象内部访问对象属性的方式,如果相在say()这个方
法里调用run()这个方法也是可以的,在say()这个方法中使用$this->run()的方式来完成调用。
PHP 相关文章推荐
第五节 克隆 [5]
Oct 09 PHP
PHP4与PHP3中一个不兼容问题的解决方法
Oct 09 PHP
php 删除无限级目录与文件代码共享
Nov 22 PHP
将文件夹压缩成zip文件的php代码
Dec 14 PHP
php 启动报错如何解决
Jan 17 PHP
PHP实现的比较完善的购物车类
Dec 02 PHP
在php和MySql中计算时间差的方法详解
Mar 27 PHP
PHP Reflection API详解
May 12 PHP
PHP实现支持加盐的图片加密解密
Sep 09 PHP
详解PHP处理字符串类似indexof的方法函数
Jun 11 PHP
php微信开发之音乐回复功能
Jun 14 PHP
实例化php类时传参的方法分析
Jun 05 PHP
php面向对象全攻略 (二) 实例化对象 使用对象成员
Sep 30 #PHP
php面向对象全攻略 (一) 面向对象基础知识
Sep 30 #PHP
PHP5 操作MySQL数据库基础代码
Sep 29 #PHP
PHP 字符截取 解决中文的截取问题,不用mb系列
Sep 29 #PHP
php 生成饼图 三维饼图
Sep 28 #PHP
php 不同编码下的字符串长度区分
Sep 26 #PHP
php 应用程序安全防范技术研究
Sep 25 #PHP
You might like
自制汽车收音机天线:收听广播的技巧和方法
2021/03/02 无线电
PHP获取浏览器信息类和客户端地理位置的2个方法
2014/04/24 PHP
PHP基于面向对象实现的留言本功能实例
2018/04/04 PHP
Laravel的Auth验证Token验证使用自定义Redis的例子
2019/09/30 PHP
jquery判断浏览器类型的代码
2012/11/05 Javascript
js 页面元素的几个用法总结
2013/11/18 Javascript
JavaScript表单通过正则表达式验证电话号码
2014/03/14 Javascript
判断字符串的长度(优化版)中文占两个字符
2014/10/30 Javascript
嵌入式iframe子页面与父页面js通信的方法
2015/01/20 Javascript
那些精彩的JavaScript代码片段
2017/01/12 Javascript
jquery dataTable 获取某行数据
2017/05/05 jQuery
VUE 更好的 ajax 上传处理 axios.js实现代码
2017/05/10 Javascript
Vue Spa切换页面时更改标题的实例代码
2017/07/15 Javascript
JS中appendChild追加子节点无效的解决方法
2018/10/14 Javascript
如何通过setTimeout理解JS运行机制详解
2019/03/23 Javascript
Vue3.0结合bootstrap创建多页面应用
2019/05/28 Javascript
小程序如何在不同设备上自适应生成海报的实现方法
2019/08/20 Javascript
[00:15]天涯墨客终极技能展示
2018/08/25 DOTA
[01:07:46]完美世界DOTA2联赛循环赛 Magma vs IO BO2第二场 11.01
2020/11/02 DOTA
[54:58]完美世界DOTA2联赛PWL S2 LBZS vs Rebirth 第一场 11.25
2020/11/25 DOTA
基于Python实现的百度贴吧网络爬虫实例
2015/04/17 Python
Python函数式编程指南(一):函数式编程概述
2015/06/24 Python
在Python中输入一个以空格为间隔的数组方法
2018/11/13 Python
pygame游戏之旅 如何制作游戏障碍
2018/11/20 Python
Python 2/3下处理cjk编码的zip文件的方法
2019/04/26 Python
10 行Python 代码实现 AI 目标检测技术【推荐】
2019/06/14 Python
python实现文本进度条 程序进度条 加载进度条 单行刷新功能
2019/07/03 Python
如何在Cloud Studio上执行Python代码?
2019/08/09 Python
PYTHON实现SIGN签名的过程解析
2019/10/28 Python
最新PyCharm 2020.2.3永久激活码(亲测有效)
2020/11/26 Python
医学检验专业自荐信
2014/09/18 职场文书
政府班子四风问题整改措施思想汇报
2014/10/08 职场文书
经理岗位职责范本
2015/04/15 职场文书
Python实现视频中添加音频工具详解
2021/12/06 Python
解决linux下redis数据库overcommit_memory问题
2022/02/24 Redis
Python各协议下socket黏包问题原理
2022/04/12 Python