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.
精彩评论