【发布时间】:2013-09-14 14:49:32
【问题描述】:
我一直低于测试脚本,但我不确定为什么会给我错误。但同时按预期工作(输出文本“woof”);
abstract class Animal {
abstract function bark();
function MakeDog(){
return $this->bark();
}
}
class Dog extends Animal {
function bark(){
echo 'Woof';
}
}
$dog = new Dog();
echo $dog->MakeDog()->bark(); // this outputs 'woof' but with error.
Fatal error: Call to a member function bark() on a non-object in [...] 26
第 26 行是//echo $dog->MakeDog()->bark();
我不确定错误与什么有关。
【问题讨论】:
-
提示:看看
bark函数的返回值。 -
return甚至没有回显文本,所以我怀疑它来自返回值/ -
我不是这个意思。在
MakeDog中,您返回bark的返回值,但是bark()不包含return 语句,因此隐式返回NULL。然后您尝试在NULL上再次调用bark()(因为这是makeDog返回的内容),这会导致给定的错误消息。
标签: php oop methods abstract-class