11

我只是从 PHP 中的基本概念 OO 开始,

Foo.php

class Foo extends Command {


    public function __construct()
    {
        parent::__construct();
    }

    public function fire()
    {
        $bar = new Bar();
    }

}

酒吧.php

class Bar extends Foo {

    public function __construct()
    {
        parent::__construct();
        $this->info('Bar');

    }
}

当我运行Foo::fire()时,它给出:Call to undefined method Foo::__construct()。但Foo显然有一个构造函数,我做错了什么?

我怀疑的另一件事是它可能是 Laravel 问题而不是 PHP。这是artisan我创建的命令。

编辑:

$this->info('Bar')在任何地方打电话Bar也会给Call to a member function writeln() on a non-object. 为什么我不能从子类中调用父类的方法?

4

1 回答 1

23

我也遇到了这个问题,觉得 Marcin 的反馈很冷漠,没有帮助,尤其是在他的评论中。为此,我很高兴向您和其他任何偶然发现此问题的人提供此答案。

在原始类 Bar 中:

class Bar extends Foo {

     public function __construct()
     {
        parent::__construct();
        $this->info('Bar');
    }
}

我只需要设置“输出”的属性,如下所示:

class Bar extends Foo {

     public function __construct()
     {
        parent::__construct();
        $this->output = new Symfony\Component\Console\Output\ConsoleOutput();
        $this->info('Bar');
    }
}

希望这有帮助!

于 2014-12-19T18:34:55.527 回答