开发者

Accessing class variables in PHP

开发者 https://www.devze.com 2023-02-23 06:42 出处:网络
I\'m wondering why the following lines causes an error. doSomething() gets called from another PHP file.

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

精彩评论

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