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 相关文章推荐
BBS(php &amp; mysql)完整版(七)
Oct 09 PHP
兼容firefox,chrome的网页灰度效果
Aug 08 PHP
解析PHP无限级分类方法及代码
Jun 21 PHP
CI使用Tank Auth转移数据库导致密码用户错误的解决办法
Jun 12 PHP
Thinkphp调用Image类生成缩略图的方法
Mar 07 PHP
php接口数据加密、解密、验证签名
Mar 12 PHP
php把数组值转换成键的方法
Jul 13 PHP
PHP新建类问题分析及解决思路
Nov 19 PHP
php实现的网页版剪刀石头布游戏示例
Nov 25 PHP
PHP基于PDO实现的SQLite操作类【包含增删改查及事务等操作】
Jun 21 PHP
php使用scandir()函数扫描指定目录下所有文件示例
Jun 08 PHP
php并发加锁问题分析与设计代码实例讲解
Feb 26 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
PHP实现的英文名字全拼随机排号脚本
2014/07/04 PHP
php将图片文件转换成二进制输出的方法
2015/06/10 PHP
Laravel实现自定义错误输出内容的方法
2016/10/10 PHP
PHP获取IP地址所在地信息的实例(使用纯真IP数据库qqwry.dat)
2016/11/15 PHP
比较搞笑的js陷阱题
2010/02/07 Javascript
jquery EasyUI的formatter格式化函数代码
2011/01/12 Javascript
使用jQuery jqPlot插件绘制柱状图
2014/12/18 Javascript
jQuery操作DOM之获取表单控件的值
2015/01/23 Javascript
Jquery获取第一个子元素简单实例
2016/06/02 Javascript
javascript获取网页各种高宽及位置的方法总结
2016/07/27 Javascript
Bootstrap中表单控件状态(验证状态)
2016/08/04 Javascript
AngularJS中的DOM操作用法分析
2016/11/04 Javascript
Vue form 表单提交+ajax异步请求+分页效果
2017/04/22 Javascript
利用javascript如何随机生成一定位数的密码
2017/09/22 Javascript
使用apifm-wxapi快速开发小程序过程详解
2019/08/05 Javascript
详解Vue后台管理系统开发日常总结(组件PageHeader)
2019/11/01 Javascript
JS三级联动代码格式实例详解
2019/12/30 Javascript
Bootstrap实现前端登录页面带验证码功能完整示例
2020/03/26 Javascript
[54:05]DOTA2-DPC中国联赛定级赛 SAG vs iG BO3第一场 1月9日
2021/03/11 DOTA
Python中字典和JSON互转操作实例
2015/01/19 Python
关于numpy数组轴的使用详解
2019/12/05 Python
python实现监控阿里云账户余额功能
2019/12/16 Python
Python开发之pip安装及使用方法详解
2020/02/21 Python
使用Python打造一款间谍程序的流程分析
2020/02/21 Python
Jupyter notebook设置背景主题,字体大小及自动补全代码的操作
2020/04/13 Python
Jupyter Notebook折叠输出的内容实例
2020/04/22 Python
python自动打开浏览器下载zip并提取内容写入excel
2021/01/04 Python
Dr.Jart+美国官网:韩国药妆品牌
2019/01/18 全球购物
应届生的求职推荐信范文
2013/11/30 职场文书
小学语文教学反思
2014/02/10 职场文书
小班评语大全
2014/05/04 职场文书
2015最新民情日记范文
2015/06/26 职场文书
初中班主任工作随笔
2015/08/15 职场文书
小学英语教学经验交流材料
2015/11/02 职场文书
周一问候语大全
2015/11/10 职场文书
浅谈Python中对象是如何被调用的
2022/04/06 Python