我有想要在其中使用$ this的方法,但我得到的是:致命错误:不在对象上下文中时使用$ this。
我怎样才能使它工作?
public static function userNameAvailibility()
{
$result = $this->getsomthin();
}
Answers:
这是正确的方法
public static function userNameAvailibility()
{
$result = self::getsomthin();
}
使用self::
,而不是$this->
用于静态方法。
有关更多信息,请参见:PHP静态方法教程:)
static::
不是self::
吗?
遗憾的是,PHP没有显示出足够描述性的错误。您不能在静态函数内使用$ this->,而必须使用self ::如果必须在同一类内调用函数
这是一个错误地调用类方法的示例。执行此代码时,您会看到一些警告,但是它将起作用并打印:“我是A:正在打印B属性”。(在php5.6中执行)
class A {
public function aMethod() {
echo "I'm A: ";
echo "printing " . $this->property;
}
}
class B {
public $property = "B property";
public function bMethod() {
A::aMethod();
}
}
$b = new B();
$b->bMethod();
它接缝的是,在称为静态方法的方法中使用的变量$ this指向“调用者”类的实例。在上面的示例中,在A类中使用了$ this-> property,它指向B的属性。
编辑:
从对象上下文中调用方法时,伪变量$ this可用。$ this是对调用对象的引用(通常是该方法所属的对象,但如果从辅助对象的上下文中静态调用该方法,则可能是另一个对象)。 PHP>基础
在静态方法中,属性用于类,而不是对象。这就是为什么无需创建对象就可以访问静态方法或功能的原因。$ this指的是由类组成的对象,但是$ self仅指相同的类。