Discuz教程网

PHP面向对象全攻略 (三)特殊的引用“$this”的使用

[复制链接]
authicon dly 发表于 2011-9-8 19:30:39 | 显示全部楼层 |阅读模式
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();
修改一下上面的实例,让每个人都说出自己的名字,性别和年龄:
代码片段
代码如下:

  1. <?php
  2. class Person{
  3. //下面是人的成员属性
  4. var $name; //人的名字
  5. var $sex; //人的性别
  6. var $age; //人的年龄
  7. //下面是人的成员方法
  8. function say(){//这个人可以说话的方法
  9. echo "我的名字叫:".$this->name." 性别:".$this->sex." 我的年龄是:".$this->age."<br>";
  10. }
  11. function run(){ //这个人可以走路的方法
  12. echo "这个人在走路";
  13. }
  14. }
  15. $p1=new Person(); //创建实例对象$p1
  16. $p2=new Person(); //创建实例对象$p2
  17. $p3=new Person(); //创建实例对象$p3
  18. //下面三行是给$p1对象属性赋值
  19. $p1->name="张三";
  20. $p1->sex="男";
  21. $p1->age=20;
  22. //下面访问$p1对象中的说话方法
  23. $p1->say();
  24. //下面三行是给$p2对象属性赋值
  25. $p2->name="李四";
  26. $p2->sex="女";
  27. $p2->age=30;
  28. //下面访问$p2对象中的说话方法
  29. $p2->say();
  30. //下面三行是给$p3对象属性赋值
  31. $p3->name="王五";
  32. $p3->sex="男";
  33. $p3->age=40;
  34. //下面访问$p3对象中的说话方法
  35. $p3->say();
  36. ?>
复制代码




输出结果
我的名字叫:张三性别:男我的年龄是:20
我的名字叫:李四性别:女我的年龄是:30
我的名字叫:王五性别:男我的年龄是:40
分析一下这个方法:
代码片段
  1. function say(){ //这个人可以说话的方法
  2. echo "我的名字叫:".$this->name." 性别:".$this->sex." 我的年龄是:".$this->age."<br>";
  3. }
复制代码

在$p1、$p2 和$p3 这三个对象中都有say()这个方法,$this 分别代表这三个对象,调用相应的属性,打印出属性的值,这就是在对象内部访问对象属性的方式,如果相在say()这个方
法里调用run()这个方法也是可以的,在say()这个方法中使用$this->run()的方式来完成调用。



上一篇:PHP面向对象全攻略 (二) 实例化对象 使用对象成员
下一篇:PHP面向对象全攻略 (四)构造方法与析构方法
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

1314学习网 ( 浙ICP备10214163号 )

GMT+8, 2025-5-2 23:27

Powered by Discuz! X3.4

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表