2014-04-03 30 views
0

嘗試從一個方法中獲取一些數據在側靜態方法(使用它在一個其他類中),但我得到'使用$ this當不在對象上下文.. '錯誤。試圖訪問其他類中的一個類的數據

下面一個基本的例子

class mClass{ 

    public $someVar = 'Hello world...'; 

    public function passFunc(){ 
     $give = $this->someVar; 
     return $give; 
    } 

    public static function showFunc(){ 
     $show = self::passFunc(); 
     return $show; 
    } 
} 

mClass::showFunc();// show error: Using $this when not in object context in... 
+1

'$ MyClass的=新mClass;'? http://www.php.net/manual/en/keyword.class.php –

回答

2

不能使用$此,當您使用靜態變量的工作。 $這是一個指向當前對象的指針,但靜態變量屬於類。

+0

沒辦法解決這個問題? – user759235

+0

@ user759235 nope – jcobhams

0

類方法(或靜態函數)不綁定到您的類的特定實例,即它沒有$this,儘管self可用。

類方法可以訪問靜態屬性或方法,但訪問類中的任何其他內容都會引發錯誤。最好將靜態方法看作組織函數的一種手段;因此,它們在外部函數和實例方法之間運行。

在你的情況,你必須你的靜態方法內部創建一個實例:

public static function showFunc() 
{ 
    $o = new self; 
    $show = $o->passFunc(); 

    return $show; 
}