2016-03-10 40 views
0
class Exam { 
    public $foo = 1; 
    public static function increaseFoo(){ 
    $this->foo++; 
    echo $this->foo; 
    } 
} 

Exam::increaseFoo(); 

此代碼生成一個錯誤如何使用普通變量中靜態方法

E_ERROR : type 1 -- Using $this when not in object context -- at line 5 

是不是可以使用全局變量爲靜態馬託?

+0

我已經添加了關於這個問題的意見。 SORRY YOU can do that –

回答

0

self取代$this,還必須在一個靜態方法使用時標記您的靜態變量:

class Exam { 
    public static $foo = 1; 
    public static function increaseFoo(){ 
    self::$foo++; 
    echo self::$foo; 
    } 
} 

Exam::increaseFoo(); 
+0

'Line:5,Error type:4 消息:語法錯誤,意外'++'(T_INC)' – ARNAB

+0

@ARNAB對不起,我更新了答案 - 在變量名前面加$ –

+0

'E_ERROR :類型1 - 訪問未聲明的靜態屬性:Exam :: $ foo - 在第5行 – ARNAB

0

變量中類必須是靜態的。不需要將該變量聲明爲公共。

class Exam { 
    private static $foo = 1; 
    public static function increaseFoo(){ 
     self::$foo++; 
     echo self::$foo; 
    } 
} 

Exam::increaseFoo(); 
+0

在變量之前沒有使用static關鍵字我可以在Static方法中使用這個變量嗎? – ARNAB

+0

不,php解釋器會拋出錯誤。 self關鍵字引用當前類。換句話說,對非靜態成員使用$ this-> member,對靜態成員使用self :: $ member。對於封裝,我也會將變量聲明爲私有。 – marc

相關問題