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 得到根目录的 __FILE__ 常量
Jul 23 PHP
php5编程中的异常处理详细方法介绍
Jul 29 PHP
php生成xml简单实例代码
Dec 16 PHP
PHP列出MySQL中所有数据库的方法
Mar 12 PHP
php实现读取内存顺序号
Mar 29 PHP
通过修改配置真正解决php文件上传大小限制问题(nginx+php)
Sep 23 PHP
PHP创建PowerPoint2007文档的方法
Dec 10 PHP
PHP对象的浅复制与深复制的实例详解
Oct 26 PHP
php7函数,声明,返回值等新特性介绍
May 25 PHP
thinkPHP中U方法加密传递参数功能示例
May 29 PHP
Laravel 自动生成验证的实例讲解:login / logout
Oct 14 PHP
php使用pthreads v3多线程实现抓取新浪新闻信息操作示例
Feb 21 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中拷贝构造函数、赋值运算符重载
2012/07/25 PHP
ThinkPHP无限级分类原理实现留言与回复功能实例
2014/10/31 PHP
jQuery 自动增长的文本输入框实现代码
2010/04/02 Javascript
基于Jquery的标签智能验证实现代码
2010/12/27 Javascript
Javascript图像处理—为矩阵添加常用方法
2012/12/27 Javascript
js调用后台servlet方法实例
2013/06/09 Javascript
jquery实现div拖拽宽度示例代码
2013/07/31 Javascript
JS截取字符串常用方法详细整理
2013/10/28 Javascript
JQuery勾选指定name的复选框集合并显示的方法
2015/05/18 Javascript
jQuery垂直多级导航菜单代码分享
2015/08/18 Javascript
javascript数据结构之二叉搜索树实现方法
2015/11/25 Javascript
基于jQuery1.9版本如何判断浏览器版本类型
2016/01/12 Javascript
详解jQuery选择器
2016/12/21 Javascript
前端构建工具之gulp的语法教程
2017/06/12 Javascript
JavaScript实现短信倒计时60s
2017/10/09 Javascript
JavaScript和TypeScript中的void的具体使用
2019/09/12 Javascript
详解Python 序列化Serialize 和 反序列化Deserialize
2017/08/20 Python
Python编程把二叉树打印成多行代码
2018/01/04 Python
Python实现线程状态监测简单示例
2018/03/28 Python
Python中常用的8种字符串操作方法
2019/05/06 Python
Python 多线程搜索txt文件的内容,并写入搜到的内容(Lock)方法
2019/08/23 Python
python3.7 利用函数os pandas利用excel对文件名进行归类
2019/09/29 Python
Python加密模块的hashlib,hmac模块使用解析
2020/01/02 Python
python numpy库linspace相同间隔采样的实现
2020/02/25 Python
用python打开摄像头并把图像传回qq邮箱(Pyinstaller打包)
2020/05/17 Python
对pytorch中x = x.view(x.size(0), -1) 的理解说明
2021/03/03 Python
浅析rem和em和px vh vw和% 移动端长度单位
2016/04/28 HTML / CSS
HTML5中实现拖放效果无须借助javascript
2012/12/26 HTML / CSS
台湾森森购物网:U-mall
2017/10/16 全球购物
Bibloo荷兰:女士、男士和儿童的服装、鞋子和配饰
2019/02/25 全球购物
详解如何解决使用JSON.stringify时遇到的循环引用问题
2021/03/23 Javascript
英语简历自我评价
2014/01/26 职场文书
电子信息科学专业自荐信
2014/01/30 职场文书
员工工作表现评语
2014/04/26 职场文书
实习单位证明范例
2014/11/17 职场文书
Python函数对象与闭包函数
2022/04/13 Python