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 相关文章推荐
php下载远程文件类(支持断点续传)
Nov 14 PHP
浅谈apache和nginx的rewrite的区别
Feb 22 PHP
处理(php-cgi.exe - FastCGI 进程超过了配置的请求超时时限)的问题
Jul 03 PHP
php检测用户是否用手机(Mobile)访问网站的类
Jan 09 PHP
xss防御之php利用httponly防xss攻击
Mar 21 PHP
PHP中模拟处理HTTP PUT请求的例子
Jul 22 PHP
微信自定义菜单的处理开发示例
Apr 16 PHP
PHP实现通过get方式识别用户发送邮件的方法
Jul 16 PHP
Zend Framework教程之资源(Resources)用法实例详解
Mar 14 PHP
php登录超时检测功能实例详解
Mar 21 PHP
Bootstrap+PHP实现多图上传功能实例详解
Apr 08 PHP
在Laravel 中实现是否关注的示例
Oct 22 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文件缓存类用法实例分析
2015/04/22 PHP
thinkPHP导出csv文件及用表格输出excel的方法
2015/12/30 PHP
thinkPHP5分页功能实现方法分析
2017/10/25 PHP
判断客户浏览器是否支持cookie的示例代码
2013/12/23 Javascript
如何将php数组或者对象传递给javascript
2014/03/20 Javascript
jQuery on()方法使用技巧详解
2015/04/16 Javascript
在JavaScript的jQuery库中操作AJAX的方法讲解
2015/08/15 Javascript
JQuery 在文档中查找指定name的元素并移除的实现方法
2016/05/19 Javascript
微信小程序 wx.request(object) API详解及实例代码
2016/09/30 Javascript
jQuery用FormData实现文件上传的方法
2016/11/21 Javascript
在页面中引入js的两种方法(推荐)
2017/08/29 Javascript
javascript 中模板方法单例的实现方法
2017/10/17 Javascript
Angularjs实现多图片上传预览功能
2018/07/18 Javascript
jquery 时间戳转日期过程详解
2019/10/12 jQuery
Vue.directive 实现元素scroll逻辑复用
2019/11/29 Javascript
详解js location.href和window.open的几种用法和区别
2019/12/02 Javascript
Vue CLI4 Vue.config.js标准配置(最全注释)
2020/06/05 Javascript
浅谈vue-props的default写不写有什么区别
2020/08/09 Javascript
keep-alive保持组件状态的方法
2020/12/02 Javascript
vue3.0 自适应不同分辨率电脑的操作
2021/02/06 Vue.js
[01:18:33]Secret vs VGJ.S Supermajor小组赛C组 BO3 第一场 6.3
2018/06/04 DOTA
老生常谈Python序列化和反序列化
2017/06/28 Python
利用python将pdf输出为txt的实例讲解
2018/04/23 Python
Django使用HttpResponse返回图片并显示的方法
2018/05/22 Python
PyCharm2018 安装及破解方法实现步骤
2019/09/09 Python
flask框架自定义过滤器示例【markdown文件读取和展示功能】
2019/11/08 Python
利用Python自动化操作AutoCAD的实现
2020/04/01 Python
英国第一摩托车和摩托车越野配件商店:GhostBikes
2019/03/10 全球购物
编辑硕士自荐信范文
2013/11/27 职场文书
幼儿园教师请假制度
2014/01/16 职场文书
利群广告词
2014/03/20 职场文书
机关党员公开承诺书
2014/08/30 职场文书
2014大学班主任工作总结
2014/11/08 职场文书
CocosCreator如何实现划过的位置显示纹理
2021/04/14 Javascript
Android开发手册TextInputLayout样式使用示例
2022/06/10 Java/Android
Moment的feature导致线上bug解决分析
2022/09/23 Javascript