2012-03-13 191 views
6

我有一個類,它有一些靜態的,一些不是靜態的方法。它有一個靜態屬性。我試圖在它的所有方法中訪問該屬性,我無法弄清楚正確的語法。通過靜態和非靜態方法訪問靜態屬性?

什麼我是這樣的:

class myClass { 
    static public $mode = 'write'; 
    static public function getMode() { 
     return myClass::$mode; 
    } 
    public function getThisMode() { 
     return $this->mode; 
    } 
} 

誰能告訴我這一個實際的語法?

回答

16

對於靜態屬性使用甚至內部的非靜態函數

return self::$mode; 

這樣做的原因是因爲靜態屬性存在的對象是否已經被實例化或不是以下。因此,我們只是使用相同的預先存在的財產。

+1

是的,這工作。謝謝。我有點好奇,爲什麼className :: $模式不起作用,但?我會盡快接受你的問題。 – DanRedux 2012-03-13 19:56:49

+0

@DanRedux乾杯。你確定你的第一個函數不返回任何東西嗎? – yehuda 2012-03-13 19:58:33

+0

@DanRedux剛剛檢查了你的代碼,並且兩者都很好地適應了我的改變。使用myClass也很好。 – yehuda 2012-03-13 20:01:26

3

如果您不在課堂上,請務必不要忘記$,否則您也會看到此錯誤。例如,請確保調用它像這樣:

$myClass = new myClass(); 

echo $myClass::$mode; 

不喜歡這樣的:

echo $myClass::mode; 
+0

啊!它絕對能更好地工作。 – 2017-04-15 20:16:09