面向对象的PHP:为什么"this"关键字是一个变量?



我目前正在学习php,并注意到教程中的一个好奇事实:

注意:$this是一个特殊变量无法分配。

不得为 constant 而不是变量

而不能分配的对象。

为什么这样做?

常数的范围是全局。相反,$this在整个应用程序中都发生了变化,因为它取决于上下文(即类)。

考虑这个简短的例子:

   class A {
       function printThis() { echo $this; }
   }
   class B {
       function printThis() { echo $this; }
   }

显然,class B中的$thisclass A中的$this不同,因此从定义上讲,它不能是常数*。

*)编辑:,但是,在PHP中存在根据上下文更改的魔法常数:

<?php
$line1 =  __LINE__;
$line2 =  __LINE__;
assert($line1 == $line2);  // fails

所以我认为用户欺骗在评论中很好地总结了它:" meh,那是php。

最新更新