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 相关文章推荐
建立文件交换功能的脚本(一)
Oct 09 PHP
用PHP连接MySQL代码的参数说明
Jun 07 PHP
解析php中call_user_func_array的作用
Jun 07 PHP
深入file_get_contents函数抓取内容失败的原因分析
Jun 25 PHP
PHP stream_context_create()函数的使用示例
May 12 PHP
学习php设计模式 php实现合成模式(composite)
Dec 08 PHP
PHP6新特性分析
Mar 03 PHP
PHP7标量类型declare用法实例分析
Sep 26 PHP
利用PHP生成静态html页面的原理
Sep 30 PHP
PHP调试及性能分析工具Xdebug详解
Feb 09 PHP
阿里云的WindowsServer2016上部署php+apache
Jul 17 PHP
Laravel框架自定义公共函数的引入操作示例
Apr 16 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
多人战的战术与战略
2020/03/04 星际争霸
php cookie 作用范围?不要在当前页面使用你的cookie
2009/03/24 PHP
基于php上传图片重命名的6种解决方法的详细介绍
2013/04/28 PHP
php 替换文章中的图片路径,下载图片到本地服务器的方法
2018/02/06 PHP
Js实现简单的小球运动特效
2016/02/18 Javascript
jQuery遍历DOM元素与节点方法详解
2016/04/14 Javascript
浅谈jquery的html方法里包含特殊字符的处理
2016/11/30 Javascript
JavaScript使用链式方法封装jQuery中CSS()方法示例
2017/04/07 jQuery
详解用node.js实现简单的反向代理
2017/06/26 Javascript
JS中type=&quot;button&quot;和type=&quot;submit&quot;的区别
2017/07/04 Javascript
VUE axios上传图片到七牛的实例代码
2017/07/28 Javascript
Vue(定时器)解决mounted不能获取到data中的数据问题
2020/07/30 Javascript
JavaScript语法约定和程序调试原理解析
2020/11/03 Javascript
[56:13]DOTA2-DPC中国联赛定级赛 LBZS vs Phoenix BO3第一场 1月10日
2021/03/11 DOTA
python实现bitmap数据结构详解
2014/02/17 Python
Python中optionParser模块的使用方法实例教程
2014/08/29 Python
Python中threading模块join函数用法实例分析
2015/06/04 Python
使用python实现ANN
2017/12/20 Python
ActiveMQ:使用Python访问ActiveMQ的方法
2019/01/30 Python
python爬虫增加访问量的方法
2019/08/22 Python
Python动态声明变量赋值代码实例
2019/12/30 Python
python标准库OS模块详解
2020/03/10 Python
如何查看python关键字
2021/01/17 Python
深入浅析HTML5中的article和section的区别
2018/05/15 HTML / CSS
澳大利亚当地最大的时装生产商:Cue
2018/08/06 全球购物
俄罗斯品牌服装在线商店:VIPAVENUE
2020/08/10 全球购物
高中毕业的自我鉴定
2013/12/09 职场文书
家长对老师的评语
2014/04/18 职场文书
小学评语大全
2014/04/22 职场文书
自动化专业毕业生求职信
2014/06/18 职场文书
陈胜吴广起义口号
2014/06/20 职场文书
党员反对四风问题思想汇报
2014/09/12 职场文书
个人四风对照检查材料
2014/09/26 职场文书
文明倡议书
2015/01/19 职场文书
2015年教师节演讲稿范文
2015/03/19 职场文书
Python数据类型最全知识总结
2021/05/31 Python