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加密解密的代码
Oct 09 PHP
PHP4实际应用经验篇(8)
Oct 09 PHP
PHP用SAX解析XML的实现代码与问题分析
Aug 22 PHP
apache+codeigniter 通过.htcaccess做动态二级域名解析
Jul 01 PHP
PHP获取本周第一天和最后一天示例代码
Feb 24 PHP
PHP中使用asort进行中文排序失效的问题处理
Aug 18 PHP
PHP中使用CURL获取页面title例子
Jan 07 PHP
php数字每三位加逗号的功能函数
Oct 22 PHP
smarty中改进truncate使其支持中文的方法
May 30 PHP
php类自动装载、链式操作、魔术方法实现代码
Jul 23 PHP
thinkPHP框架实现的简单计算器示例
Dec 07 PHP
PHP mkdir创建文件夹实现方法解析
Nov 13 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 无限极分类
2008/03/27 PHP
PHP ? EasyUI DataGrid 资料取的方式介绍
2012/11/07 PHP
关于mysql字符集设置了character_set_client=binary 在gbk情况下会出现表描述是乱码的情况
2013/01/06 PHP
php+mysql实现数据库随机重排实例
2014/10/17 PHP
js电信网通双线自动选择技巧
2008/11/18 Javascript
一个简单的JavaScript数据缓存系统实现代码
2010/10/24 Javascript
使用js在页面中绘制表格核心代码
2013/09/16 Javascript
js实现身份证号码验证的简单实例
2014/02/19 Javascript
JS实现窗口加载时模拟鼠标移动的方法
2015/06/03 Javascript
JavaScript动态创建div等元素实例讲解
2016/01/06 Javascript
JS实现的手机端精简幻灯片效果
2016/09/05 Javascript
JavaScript中省略元素对数组长度的影响
2016/10/26 Javascript
jQuery实现字符串全部替换的方法
2016/12/12 Javascript
nodejs动态创建二维码的方法
2017/08/12 NodeJs
vue+vuex+axios+echarts画一个动态更新的中国地图的方法
2017/12/19 Javascript
jQuery控制input只能输入数字和两位小数的方法
2019/05/16 jQuery
微信小程序实现下拉刷新动画
2019/06/21 Javascript
JS script脚本中async和defer区别详解
2020/06/24 Javascript
js+css3实现炫酷时钟
2020/08/18 Javascript
Python中的fileinput模块的简单实用示例
2015/07/09 Python
python安装mysql-python简明笔记(ubuntu环境)
2016/06/25 Python
使用paramiko远程执行命令、下发文件的实例
2017/10/01 Python
深入理解Python中range和xrange的区别
2017/11/26 Python
Python与人工神经网络:使用神经网络识别手写图像介绍
2017/12/19 Python
基于python list对象中嵌套元组使用sort时的排序方法
2018/04/18 Python
Python smtplib实现发送邮件功能
2018/05/22 Python
计算机二级python学习教程(2) python语言基本语法元素
2019/05/16 Python
Python稀疏矩阵及参数保存代码实现
2020/04/18 Python
Sneaker Studio罗马尼亚网站:购买运动鞋
2018/11/04 全球购物
夜不归宿检讨书
2014/02/25 职场文书
战略合作协议书范本
2014/04/18 职场文书
房地产经营管理专业自荐信
2014/09/02 职场文书
2014教师党员自我评议总结
2014/09/19 职场文书
入股合作协议书
2014/10/12 职场文书
2015年高中生国庆节演讲稿
2015/07/30 职场文书
MySql数据库 查询时间序列间隔
2022/05/11 MySQL