免费SEO软件

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 2877|回复: 0

PHP面向对象中$this的理解

[复制链接]

122

主题

143

帖子

652

积分

超级版主

Rank: 8Rank: 8

积分
652
发表于 2015-5-16 22:04:02 | 显示全部楼层 |阅读模式
在定义一个类时,因为没有对类实例化(对象),因而也无法得知对象的具体名称是什么。这时,如果想调用类中的成员方法或成员变量,就只能通过伪变量$this调用,$this顾名思义就是指类本身,需要注意的一点是$this 只能在类内部使用。否则将出错。
有一点值得注意的是,在类内部调用变量时,有遇到过两种写法:$this->name以及$this->$name;这两者有什么区别?
以下属个人理解,如有错误,请指教。
参考下面的例子:
<?php
class Test{
public $name = "abc";
public $abc = "test";
public function eTest(){
$name1 = "name";
echo $this->name.'<br>';   // 输出 abc
echo $this->$name1.'<br>';  // 输出 abc,因为 $name1 的值是name,相当与这里替换成 echo $this->name;
$name2 = $this->$name1;  // $name2 的值是 abc
echo $this->$name2.'<br>';  // 输出 test,同上,相当与是 echo $this->abc;
}
}
$a = new Test();
$a ->eTest();
?>
下面我们分步骤来理解:
1、可以先将$this->name和$this->$name看成"$this->变量名",变量名可以是name也可以是$name,这看起来有些冲突,我们将$name换个变量,如$test,即name和$test作为变量名。
2、理解一个变量中存在有两个因素,即变量名和变量值。这样就可以简单的理解上面的变量名了。name本身就是一个变量的变量名,$test则可以理解为以一个变量值为变量名的变量。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

站长推荐上一条 /1 下一条

QQ|Archiver|手机版|小黑屋|百度优化软件

GMT+8, 2019-1-21 04:09 , Processed in 0.402139 second(s), 22 queries .

Powered by Discuz! X3

© 2001-2013 Comsenz Inc.

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