【发布时间】:2009-02-05 15:27:05
【问题描述】:
练习测试中有一个有趣的问题,我不明白答案。以下代码的输出是什么:
<?php
class Foo {
public $name = 'Andrew';
public function getName() {
echo $this->name;
}
}
class Bar extends Foo {
public $name = 'John';
public function getName() {
Foo::getName();
}
}
$a = new Bar;
$a->getName();
?>
最初,我认为这是一个错误,因为静态方法不能引用 $this(至少在 PHP5 中)。我自己对此进行了测试,它实际上输出了 John。
我添加了 Foo::getName();在脚本的末尾,确实得到了我所期待的错误。那么,当您从扩展您调用的类的类中调用静态方法时,会发生什么变化?
有人介意详细解释一下这里发生了什么吗?
【问题讨论】: