特殊的引用”$this“的使用
2016-06-19 14:47
190 查看
现在我们知道了如何访问对象中的成员,是通过”对象->成员”的方式访问的,这是在对象的外部去访问对象中成员的形式, 那么如果我想在对象的内部,让对象里的方法访问本对象的属性, 或是对象中的方法去调用本对象的其它方法这时我们怎么办?因为对象里面的所有的成员都要用对象来调用,包括对象的内部成员之间的调用,所以在PHP里面给 我提供了一个本对象的引用$this, 每个对象里面都有一个对象的引用$this来代表这个对象,完成对象内部成员的调用,
this的本意就是“这个”的意思, 上面的实例里面,我们实例化三个实例对象$P1、 $P2、 $P3,这三个对象里面各自存在一个$this分别代表对象$p1、$p2、$p3 。
通过上图我们可以看到,$this就是对象内部代表这个对象的引用,在对象内部和调用本对象的成员和对象外部调用对象的成员所使用的方式是一样的。
$this->属性: $this->name;$this->age;$this->sex;
$this->方法 :$this->say();$this->run();
修改一下上面的实例,让每个人都说出自己的名字,性别和年龄:
输出结果为:
我的名子叫:张三 性别:男 我的年龄是:20我的名子叫:李四 性别:女 我的年龄是:30我的名子叫:王五 性别:男 我的年龄是:40
分析一下这个方法:
在$p1、$p2和$p3这三个对象中都有say()这个方法,$this分别代表这三个对象, 调用相应的属性,打印出属性的值,这就是在对象内部访问对象属性的方式, 如果相在say()这个方里调用run()这个方法也是可以的,在say()这个方法中使用$this->run()的方式来完成调用。
this的本意就是“这个”的意思, 上面的实例里面,我们实例化三个实例对象$P1、 $P2、 $P3,这三个对象里面各自存在一个$this分别代表对象$p1、$p2、$p3 。
通过上图我们可以看到,$this就是对象内部代表这个对象的引用,在对象内部和调用本对象的成员和对象外部调用对象的成员所使用的方式是一样的。
$this->属性: $this->name;$this->age;$this->sex;
$this->方法 :$this->say();$this->run();
修改一下上面的实例,让每个人都说出自己的名字,性别和年龄:
01 | <?php |
02 | class Person |
03 | { |
04 | // 下面是人的成员属性 |
05 | var $name ; //人的名子 |
06 | var $sex ; //人的性别 |
07 | var $age ; //人的年龄 |
08 |
09 | // 下面是人的成员方法 |
10 | function say() // 这个人可以说话的方法 |
11 | { |
12 | echo "我的名子叫:" . $this ->name " 性别:" . $this ->sex " 我的年龄是:" . $this ->age; |
13 | } |
14 |
15 | function run() // 这个人可以走路的方法 |
16 | { |
17 | echo "这个人在走路" ; |
18 | } |
19 | } |
20 |
21 | $p1 = new Person(); // 创建实例对象$p1 |
22 | $p2 = new Person(); // 创建实例对象$p2 |
23 | $p3 = new Person(); // 创建实例对象$p3 |
24 |
25 | // 下面三行是给$p1对象属性赋值 |
26 | $p1 ->name "张三" ; |
27 | $p1 ->sex "男" ; |
28 | $p1 ->age |
29 |
30 | // 下面访问$p1对象中的说话方法 |
31 | $p1 ->say(); |
32 |
33 | // 下面三行是给$p2对象属性赋值 |
34 | $p2 ->name "李四" ; |
35 | $p2 ->sex "女" ; |
36 | $p2 ->age |
37 |
38 | // 下面访问$p2对象中的说话方法 |
39 | $p2 ->say(); |
40 |
41 | // 下面三行是给$p3对象属性赋值 |
42 | $p3 ->name "王五" ; |
43 | $p3 ->sex "男" ; |
44 | $p3 ->age |
45 |
46 | // 下面访问$p3对象中的说话方法 |
47 | $p3 ->say(); |
48 | ?> |
我的名子叫:张三 性别:男 我的年龄是:20我的名子叫:李四 性别:女 我的年龄是:30我的名子叫:王五 性别:男 我的年龄是:40
分析一下这个方法:
1 | function say() // 这个人可以说话的方法 |
2 | { |
3 | echo "我的名子叫:" . $this ->name " 性别:" . $this ->sex " 我的年龄是:" . $this ->age; |
4 | } |
相关文章推荐
- winform chart 控件之滚动条的放大与缩小功能
- 流程控制的使用CASE 语句用法
- 2016.6.19——C++杂记
- mysql 字符集设置
- 课程总结
- android你可能要用到的自定义View分享
- 离线保存浏览器网页
- Spring缓存注解@Cache,@CachePut , @CacheEvict,@CacheConfig使用
- Android新特性之CardView的简单使用
- lucene中模糊搜索的应用场景
- Error: Registry key 'Software\JavaSoft\Java Runtime Environment'\CurrentVersion'
- C语言str部分函数实现
- libuv学习笔记(14)
- 动态代理
- 单链表基本操作
- html之块级元素和内联元素
- 浏览器离线保存数据
- 当复仇者联盟遇上Dagger2、RxJava和Retrofit的巧妙结合
- 转: Android基于HLS和RTMP协议的第三方SDK选择
- 高级映射之事务