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