2016-03-10 21 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

相关问题