2011-04-08 84 views
1

我想知道爲什麼以下行會導致錯誤。 doSomething()從另一個PHP文件中調用。訪問PHP中的類變量

class MyClass 
{ 
    private $word; 

    public function __construct() 
    { 
     $this->word='snuffy'; 
    } 
    public function doSomething($email) 
    { 
     echo('word:'); 
     echo($this->word); //ERROR: Using $this when not in object context 
    } 
} 

回答

1

要使用你的類和方法,不static,你必須實例化類:

$object = new MyClass(); 
$object->doSomething('[email protected]'); 


你不能靜態地打電話給你的非靜態方法,像這樣:

MyClass::doSomething('[email protected]'); 

打電話給你會得到:

  • 警告(我使用PHP 5.3)Strict standards: Non-static method MyClass::doSomething() should not be called statically
  • 而且,正如你的靜態所謂的非靜態的方法是使用$thisFatal error: Using $this when not in object context


欲瞭解更多信息,您應該閱讀手冊中的Classes and Objects部分 - 對於此特定問題,請閱讀其Static Keyword頁面。

4

你打電話的方法如何?

MyClass::doSomething('[email protected]'); 

會失敗,因爲它不是一個靜態方法,而你不訪問一個靜態變量。

但是,這樣做

$obj = new MyClass(); 
$obj->doSomething('[email protected]'); 

應該工作。