Php 这里怎么了?屏幕上没有显示任何内容
运行时不显示任何内容。xdebug不运行。这个简单的例子不起作用Php 这里怎么了?屏幕上没有显示任何内容,php,debugging,Php,Debugging,运行时不显示任何内容。xdebug不运行。这个简单的例子不起作用 ini_set("display_errors", 1); error_reporting(E_ALL); abstract class Hello { protected function hello(); } class Helloworld extends Hello { public $world; public function __construct($world){ $t
ini_set("display_errors", 1);
error_reporting(E_ALL);
abstract class Hello
{
protected function hello();
}
class Helloworld extends Hello
{
public $world;
public function __construct($world){
$this->world = $world;
}
public function hello() {
echo 'Hello + '.$this->world;
}
}
class Hiotherworld extends Hello
{
public $world;
public function __construct($world){
$this->world = $world;
}
public function hello(){
echo 'Hi + '.$this->world;
}
}
$hello = new Helloworld("Earth");
$hello->hello();
$hi = new Hiotherworld("Mars");
$hi->hello();
致命错误:非抽象方法Hello::Hello()必须包含正文:
受保护函数hello()代码>致命错误:非抽象方法Hello::Hello()必须包含正文:
受保护函数hello()代码>您不能更改子类中方法的可见性。您将hello()
声明为protected
,因此它也必须在子类中protected
我猜您想在Hello
中将其声明为public
作为受保护在这种情况下没有任何意义。您还错过了摘要
关键字(谢谢@rNix),您应该将$world
的声明移动到基类:
最后,Hello
应该是这样的:
abstract class Hello
{
$protected $world;
abstract public function hello();
}
不能更改子类中方法的可见性。您将hello()
声明为protected
,因此它也必须在子类中protected
我猜您想在Hello
中将其声明为public
作为受保护在这种情况下没有任何意义。您还错过了摘要
关键字(谢谢@rNix),您应该将$world
的声明移动到基类:
最后,Hello
应该是这样的:
abstract class Hello
{
$protected $world;
abstract public function hello();
}
改变它
abstract class Hello
{
protected function hello(){}
}
为我工作。改变它
abstract class Hello
{
protected function hello(){}
}
为我工作