1
我此刻学习PHP和the tutorial注意到一个奇怪的事实:面向对象的PHP:为什么“这个”关键字是一个变量?
注:
$this
是一个特殊的变量不能进行分配。
不能被分配给已被实现为恒定,而不是一个可变 Doesen't对象?
为什么这样做?
我此刻学习PHP和the tutorial注意到一个奇怪的事实:面向对象的PHP:为什么“这个”关键字是一个变量?
注:
$this
是一个特殊的变量不能进行分配。
不能被分配给已被实现为恒定,而不是一个可变 Doesen't对象?
为什么这样做?
The scope of a constant is global。相比之下,$this
在整个应用程序中都会发生变化,因为它取决于上下文(即类)。
考虑这个短的例子:
class A {
function printThis() { echo $this; }
}
class B {
function printThis() { echo $this; }
}
显然,在$this
是class B
从class A
$this
不同,因此通过定义它不能是一个常数*。
*)编辑:然而,在PHP中存在该变化取决于上下文magic constants:
<?php
$line1 = __LINE__;
$line2 = __LINE__;
assert($line1 == $line2); // fails
所以我觉得用户deceze summarized it pretty well in the comments: “咩,这是PHP”
它*是*变量,'$ this'总是指向不同的对象。他们本可以像'__FILE__'那样使它成为一个* magic *常量,但他们没有。呃,那是PHP。这在许多语言中都是一样的,其他人使用'self',这与'foo'等其他变量无法区分......没有*可以以某种方式实现,语言设计人员可以做任何他们想做的事情。 – deceze