【发布时间】:2016-06-17 10:50:22
【问题描述】:
我有一些代码:
class a {
public static function getCl() {
echo __CLASS__;
}
public function test() {
static::getCl();
}
}
class b extends a {
public static function getCl() {
echo __CLASS__;
}
}
$testClass = new b();
$testClass->test();
这个结果:b。然后我试试这个:
class a {
public static function getCl() {
echo __CLASS__;
}
public function test() {
$this->getCl();
}
}
class b extends a {
public static function getCl() {
echo __CLASS__;
}
}
$testClass = new b();
$testClass->test();
这个结果仍然是 b。我已经知道 static:: 和 self:: 之间的区别,但是有人可以告诉我我的代码中 static:: 和 $this-> 之间的区别。我应该使用哪一个?
【问题讨论】:
-
在您的上下文中,主要区别在于使用 $this 您可以创建对象链接,但使用 static 关键字是不可能的。
-
static::只能用于静态方法/属性,而$this->可以用于任何一个。 -
@silkfire:根据手册,声明为静态的属性不能被实例化的类对象访问