这有什么不对?屏幕上不显示任何内容

时间:2013-12-03 10:54:52

标签: 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){
        $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();

3 个答案:

答案 0 :(得分:2)

致命错误:非抽象方法Hello :: hello()必须包含body: protected function hello();

答案 1 :(得分:1)

您无法更改子类中方法的可见性。您将hello()声明为protected,因此在子类中也必须为protected

我想你想在public中将其声明为Hello,因为受保护在这种情况下毫无意义。你错过了abstract关键字(谢谢@rNix)你应该将$world的声明移到基类:

最后Hello应如下所示:

abstract class Hello
{
    $protected $world;

    abstract public function hello();
}

答案 2 :(得分:1)

改变它

abstract class Hello
{
    protected function hello(){}
}

为我工作。