面向对象的PHP:为什么“this”关键字是变量?

时间:2014-01-25 08:42:51

标签: php oop this

我现在正在学习PHP,并注意到the tutorial的一个奇怪的事实:

  

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

不能分配的Doesen't对象必须实现为 常量,而不是变量

为什么会这样?

1 个答案:

答案 0 :(得分:1)

The scope of a constant is global。相反,$this在整个应用程序中发生变化,因为它取决于上下文(即类)。

考虑这个简短的例子:

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

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

显然,$this中的class B$this中的class A不同,因此根据定义,它不能是常量*。

*)编辑但是,在PHP中,存在magic constants根据上下文发生变化:

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

所以我认为用户deceze summarized it pretty well in the comments:“ Meh,那是PHP。