PHP中的抽象类抛出错误
我已经低于测试脚本,我不知道为什么是给我的错误。但同时工作如预期(输出文本“woof”) 第26行是PHP中的抽象类抛出错误,php,oop,methods,abstract-class,Php,Oop,Methods,Abstract Class,我已经低于测试脚本,我不知道为什么是给我的错误。但同时工作如预期(输出文本“woof”) 第26行是//echo$dog->MakeDog()->bark() 我不确定这个错误与什么有关 也许你甚至不需要回音。这应该行得通 $dog = new Dog(); $dog->MakeDog()->bark(); 另外,去掉return只需在MakeDog函数中调用bark() function MakeDog() { $this->bark(); } 也许你甚至
//echo$dog->MakeDog()->bark()代码>
我不确定这个错误与什么有关 也许你甚至不需要回音。这应该行得通
$dog = new Dog();
$dog->MakeDog()->bark();
另外,去掉return
只需在MakeDog
函数中调用bark()
function MakeDog() {
$this->bark();
}
也许你甚至不需要回音。这应该行得通
$dog = new Dog();
$dog->MakeDog()->bark();
另外,去掉return
只需在MakeDog
函数中调用bark()
function MakeDog() {
$this->bark();
}
难道不应该是:
$dog = new Dog();
echo $dog->MakeDog();
您的函数MakeDog已经执行了方法bark()。它不应该是:
$dog = new Dog();
echo $dog->MakeDog();
您的函数MakeDog已经执行了方法bark()。您不能在方法MakeDog()
之后调用bark()
,也不能使用echo返回消息,对于此用法,“return”,正确的代码:
<?php
abstract class Animal {
abstract function bark();
public function MakeDog(){
return $this->bark();
}
}
class Dog extends Animal {
function bark(){
return 'Woof';
}
}
$dog = new Dog();
echo $dog->MakeDog();
?>
您不能在方法MakeDog()
之后调用bark()
,也不能使用echo返回消息,为此,请使用“return”,正确的代码:
<?php
abstract class Animal {
abstract function bark();
public function MakeDog(){
return $this->bark();
}
}
class Dog extends Animal {
function bark(){
return 'Woof';
}
}
$dog = new Dog();
echo $dog->MakeDog();
?>
提示:请看一下bark
函数的返回值。return
甚至不回显文本,因此我怀疑它是否来自返回值/我不是这个意思。在MakeDog
中,返回bark
的返回值,但是bark()
不包含返回语句,因此隐式返回NULL
。然后尝试在NULL
上再次调用bark(),因此,我怀疑它是否来自返回值/这不是我的意思。在MakeDog
中,返回bark
的返回值,但是bark()
不包含返回语句,因此隐式返回NULL
。然后您尝试在NULL
上再次调用bark()
(因为这是makeDog
返回的结果),这会导致给定的错误消息。不,我需要将bark追加到makeDog()
methodNope,我需要将bark追加到makeDog())
method如果我想这样叫它怎么办echo$dog->MakeDog()->bark()代码>?您好,唯一的方法是如果方法“MakeDog”返回类的实例,我鼓励您阅读关于“Singleton”的内容,这非常简单。感谢您的回答,但我相信有一种方法可以实现这一点,而无需点击Singleton。我只是很难弄明白这一点。您可以在MakeDog方法上返回$this,并以这种方式调用echo$dog->MakeDog()->bark();太好了,就像我刚才看到的那个样,若我想这样叫它echo$dog->MakeDog()->bark()代码>?您好,唯一的方法是如果方法“MakeDog”返回类的实例,我鼓励您阅读关于“Singleton”的内容,这非常简单。感谢您的回答,但我相信有一种方法可以实现这一点,而无需点击Singleton。我只是很难弄明白这一点。您可以在MakeDog方法上返回$this,并以这种方式调用echo$dog->MakeDog()->bark();完美,正是我想要的