在PHP中访问类变量

时间:2011-04-08 17:48:34

标签: php

我想知道为什么以下行会导致错误。从另一个PHP文件中调用doSomething()

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
    }
}

2 个答案:

答案 0 :(得分:4)

你怎么称呼这个方法?

否则

MyClass::doSomething('user@example.com');

将失败,因为它不是静态方法,并且您没有访问静态变量。

然而,做

$obj = new MyClass();
$obj->doSomething('user@xample.com');

应该有用。

答案 1 :(得分:1)

要使用非static的课程和方法,您必须实现课程设置:

$object = new MyClass();
$object->doSomething('test@example.com');


您无法静态调用非静态方法,如下所示:

MyClass::doSomething('test@example.com');

打电话给你:

  • 警告(我使用的是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页。