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 相关文章推荐
追求程序速度,而不是编程的速度
Apr 23 PHP
php网站来路获取代码(针对搜索引擎)
Jun 08 PHP
XAMPP安装与使用方法详细解析
Nov 27 PHP
php实现zip压缩文件解压缩代码分享(简单易懂)
May 10 PHP
使用PHP处理数据库数据如何将数据返回客户端并显示当前状态
Feb 16 PHP
php使用preg_match()函数验证ip地址的方法
Jan 07 PHP
详解yii2实现分库分表的方案与思路
Feb 03 PHP
PHP时间日期增减操作示例【date strtotime实现加一天、加一月等操作】
Dec 21 PHP
php查询内存信息操作示例
May 09 PHP
Laravel 模型使用软删除-左连接查询-表起别名示例
Oct 24 PHP
php实现通过stomp协议连接ActiveMQ操作示例
Feb 23 PHP
PHP实现基本留言板功能原理与步骤详解
Mar 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
采用thinkphp自带方法生成静态html文件详解
2014/06/13 PHP
php实现对两个数组进行减法操作的方法
2015/04/17 PHP
CI框架中数据库操作函数$this-&gt;db-&gt;where()相关用法总结
2016/05/17 PHP
如何在PHP中生成随机数
2020/06/04 PHP
javascript读取xml
2006/11/04 Javascript
js计算页面刷新的次数
2009/07/20 Javascript
javascript 操作Word和Excel的实现代码
2009/10/26 Javascript
JQuery+CSS提示框实现思路及代码(纯手工打造)
2013/05/07 Javascript
js 去掉空格实例 Trim() LTrim() RTrim()
2014/01/07 Javascript
JavaScript的jQuery库插件的简要开发指南
2015/08/12 Javascript
jquery实现的Accordion折叠面板效果代码
2015/09/02 Javascript
JS实现兼容性好,带缓冲的动感网页右键菜单效果
2015/09/18 Javascript
javascript生成随机数方法汇总
2015/11/12 Javascript
全面介绍javascript实用技巧及单竖杠
2016/07/18 Javascript
jQuery基于xml格式数据实现模糊查询及分页功能的方法
2016/12/25 Javascript
JS仿JQuery选择器功能
2017/03/08 Javascript
微信小程序实现移动端滑动分页效果(ajax)
2017/06/13 Javascript
vue-cli中的babel配置文件.babelrc实例详解
2018/02/22 Javascript
vue-router中的hash和history两种模式的区别
2018/07/17 Javascript
vue+element实现表格新增、编辑、删除功能
2019/05/28 Javascript
React 全自动数据表格组件——BodeGrid的实现思路
2019/06/12 Javascript
vue.js的状态管理vuex中store的使用详解
2019/11/08 Javascript
Vue-CLI与Vuex使用方法实例分析
2020/01/06 Javascript
MySQLdb ImportError: libmysqlclient.so.18解决方法
2014/08/21 Python
Python中实现参数类型检查的简单方法
2015/04/21 Python
Python+OpenCV实现图像融合的原理及代码
2018/12/03 Python
利用ImageAI库只需几行python代码实现目标检测
2019/08/09 Python
python通过txt文件批量安装依赖包的实现步骤
2019/08/13 Python
Python实现银行账户资金交易管理系统
2020/01/03 Python
自我评价范文点评
2013/12/04 职场文书
办公室文员工作职责
2014/01/31 职场文书
小学生检讨书大全
2014/02/06 职场文书
《海伦?凯勒》教学反思
2014/04/17 职场文书
为什么在foreach循环中JAVA集合不能添加或删除元素
2021/06/11 Java/Android
解决MultipartFile.transferTo(dest) 报FileNotFoundExcep的问题
2021/07/01 Java/Android
MySQL 执行数据库更新update操作的时候数据库卡死了
2022/05/02 MySQL