开发者

Accessing class variables in PHP

I'm wondering why the following lines causes an error. doSomething() gets called from another PHP file.

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


How are you calling the method?

Doing

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

will fail, as it's not a static method, and you're not accessing a static variable.

However, doing

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

should work.


To use your class and method which are not static, you must instanciate your class :

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


You cannot call your non-static method statically, like this :

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

Calling this will get you :

  • A warning (I'm using PHP 5.3) : Strict standards: Non-static method MyClass::doSomething() should not be called statically
  • And, as your statically-called non-static method is using $this : Fatal error: Using $this when not in object context


For more informations, you should read the Classes and Objects section of the manual -- and, for this specific question, its Static Keyword page.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜