【发布时间】:2012-09-27 14:22:29
【问题描述】:
我们是否需要在以下情况下使用static::$attribute 而不是$this->attribute:
b.php
class B {
public function tellAttribute(){
// $this OR static ??
echo $this->attribute;
}
}
a.php
include 'b.php';
class A extends B {
public $attribute = 'foo';
}
$test = new A();
$test->tellAttribute();
问这个是因为对我来说它不应该工作,除非我使用static::$attribute,但它仍然在呼应foo。是什么原因?
【问题讨论】:
-
忘掉静态,没有它也没关系,因为这根本不是静态调用。通常没有理由在 PHP 中使用后期静态绑定,它只是一个让一些用户感到困惑的特性。
-
@hakra
parent::在处理继承自其他类的类时实际上非常有用。 -
我从 Kevin Yank 那里了解到,我们需要使用
static::attribute来访问正在继承的类的属性,而$this不起作用。 -
@Mahn:
parent::不是静态的,与后期静态绑定无关。 -
@YousufIqbal Kevin Yank 错了(不管是谁)