2011-04-08 79 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]'); 

应该工作。