2012-12-16 59 views
5

可能重複: What's the difference between :: (double colon) and -> (arrow) in PHP?
Reference - What does this symbol mean in PHP?在PHP中::和 - >之間的區別?

我與PHP相當不錯,但只有程序。所以我決定開始學習面向對象。我已經掌握了它,並且非常喜歡它。

在PHP.net上,我總是看到面向對象爲mysqli::query

但是,我見過的每個示例都使用mysqli->query以及我一直使用的示例。

今天我碰到一個實例,看到::用在一個類的例子中。

所以,現在我的問題是,::->之間有區別嗎? 它是否與"'之間的區別?

+2

您可以使用SymbolHound找到這個東西。很多答案在這裏http://symbolhound.com/?q=%3A%3A+-%3E – elclanrs

+0

Aaaand ...沒關係。經過一個小時的搜索後,我發佈了我的問題後發現我的答案。 XD。 – Oberst

+0

並感謝elclanrs。在我發明之前,我沒有看到你的評論。 =) – Oberst

回答

8

::是調用靜態方法,->是實例方法

+2

除此之外,方法通常在'::'文檔中引用,即使它們不是靜態方法。我認爲這是他的困惑所在。 – Brad

+2

是的,就像在Java中一樣,你不會調用使用井號('#')的方法,也不會理解爲什麼會這樣做。 –

+3

這就是我爲什麼問布拉德的原因。 謝謝羅賓! – Oberst

4

::是「scope resolution operator」(也恰當地命名爲Paamayim Nekudotayim),是用來做靜態通常(這意味着您將在類本身的上下文中調用方法,而不是對象)方法調用。但是也有例外的情況,比如試圖從一個覆蓋方法調用父類的方法:

parent::foo(); // uses same context as when the method itself was called 

而且還能讓您引用類的靜態屬性,如靜態屬性和常量。

ClassName::FOO; 
ClassName::$property = "bar"; 

- >然而用於引用一個屬性或方法在實際的對象實例,並且總是需要一個對象實例的操作者的左側(如$這一點)。

+0

+1用於將我鏈接到php.net頁面。 – Oberst