php中关于$this->a 与 $this->$a 的心得体会

来源:互联网 发布:软件腰带剑开刃多少钱 编辑:程序博客网 时间:2024/05/16 13:42
 在学习面向对象的时候,学会了 $this->成员属性 = 属性值 ,这个是给成员属性赋值的方法。前几天学习新的内容,按照书上给的代码例子敲一遍的时候,突然地发现了$this->$a
这个东西,然后我就纠结与$this->a与$this->$a两个之间的差异了。这个问题折磨了我一整个晚上外加一个早上。其实也要怪自己有资源都不会利用(有问题,找谷歌嘛)。于是我就问了我师父这个近乎白痴的问题。截图是我师父给我的答案。说实话,其实的我,对这个答案是一知半解的。也许是因为我没有问到那个让我最疑惑的点吧,让师父有点误解我问的的问题了。而且由于当时有其他的原因,我就来不及刨根问底。

我自己写了一个小程序来解惑。下图是关于$this->$a 的错误用法:
如果学过php面向对象的人都知道,上图的赋值的用法是错误的。可是你不一定知道什么是错误的。知道今晚之前,我都不知道。幸运的是,我从这一刻开始就知道了。你也知道了。下图是另一个老师给我的关于”$this->a 与 $this->$a两者之间的区别“的答案:

上面的那个案例中:因为$a的初始值为空,所以$this->$a没有指向任何东西,将$a的值赋给它是没有任何的效果的。也许你现在又有疑问了,为什么将$a的值赋给$this->a就可以呢? 原因很简单:因为$a是变量, a是变量$a的地址名(也是所谓的成员属性名)。当你定义了$a这么一个变量,系统就在内存中开辟了一个空间,空间的地址名就是a。
$this->$a的正确使用方法:

$this->$a这种格式常用的地方已经在第一图片中说明了。欢迎各位大神纠错和吐槽!!!

原创粉丝点击