我想知道为什么以下行会导致错误。从另一个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
}
}
答案 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');
打电话给你:
Strict standards: Non-static method MyClass::doSomething() should not be called statically
$this
:Fatal error: Using $this when not in object context
有关更多信息,请阅读手册的Classes and Objects部分 - 对于此特定问题,请阅读其Static Keyword页。