2014-01-25 105 views
1

我此刻學習PHP和the tutorial注意到一個奇怪的事實:面向對象的PHP:爲什麼「這個」關鍵字是一個變量?

注:$this是一個特殊的變量不能進行分配。

不能被分配給已被實現爲恆定,而不是一個可變 Doesen't對象?

爲什麼這樣做?

+2

它*是*變量,'$ this'總是指向不同的對象。他們本可以像'__FILE__'那樣使它成爲一個* magic *常量,但他們沒有。呃,那是PHP。這在許多語言中都是一樣的,其他人使用'self',這與'foo'等其他變量無法區分......沒有*可以以某種方式實現,語言設計人員可以做任何他們想做的事情。 – deceze

回答

1

The scope of a constant is global。相比之下,$this在整個應用程序中都會發生變化,因爲它取決於上下文(即類)。

考慮這個短的例子:

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

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

顯然,在$thisclass Bclass A$this不同,因此通過定義它不能是一個常數*。

*)編輯:然而,在PHP中存在該變化取決於上下文magic constants

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

所以我覺得用戶deceze summarized it pretty well in the comments: 「咩,這是PHP

相關問題