2011-07-08 58 views

回答

6

->用於訪問實例化對象的屬性和方法。 ::用於訪問靜態方法,常量或重寫的方法。

更多信息:

4

::用於訪問靜態方法或屬性,所以不必實例包含類的一個對象。

->用於訪問實例化對象的方法或屬性。

2

使用->意味着您基於實例(它保留對象的狀態,如私有/公共變量集)的訪問方法。

::是一種靜態方法,這意味着如果對象已經或尚未初始化,它就沒有任何障礙,但是這些方法屬於這個對象。


圖片如下:

class Mustang 
{ 
    var $gallons = 12; // gallons 

    public function getFuel() 
    { 
    return $this->gallons; 
    } 

    public static function getEngine() 
    { 
    return "V8"; 
    } 
} 

$mustang = new Mustang(); // creating an instance 

echo $mustang->getFuel(); // retrieve the fuel (instance, _this_ mustang) 

echo Mustang::getEngine(); // echo a stat about Mustangs in general (static) 

如果你有一個「野馬」的一個實例,每個實例都可以(假設)有燃料的給它(這是基於實例的具體金額,以及將可以使用->訪問)。

如果你想要的東西,還涉及到野馬,但對具體的實例本身沒有霸菱,你要提到一個靜態方法(在這種情況下,所有的野馬在這種情況下,V8,象徵性的::)。

1

弗朗索瓦所說的是正確的。 ::運營商被稱爲Scope Resolution Operator ....和(不管你信不信)稱爲paamayim-nekudotayim。它用於訪問的靜態,常量和重載成員。我強調班級,因爲它不用於特定的對象。您可以將範圍解析運算符視爲類本身的元素;它對自己及其父母行事。 (想想看,類常量不屬於任何特定的對象,所以你不會使用->

這給我們帶來什麼->?它是用來操作對象,而不是的。當你例如:

$john = new User(); //create the object 
$john->age = 10; //accessing an object property 
$age = $john->getAge(); //accessing an object method 
相關問題