Команда Laravel не может вызвать $ this-> gt; info () в дочернем классе

Я только начинаю с основных понятий ОО в PHP,

foo.php

class Foo extends Command {public function __construct()
{
parent::__construct();
}

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

}

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, Почему я не могу вызвать метод родителя из дочернего класса?

8

Решение

Я также столкнулся с этой проблемой и чувствовал, что отзывы Марцина были холодными и бесполезными, особенно в его комментариях. Для этого я с удовольствием отвечу этим ответом вам и всем, кто сталкивается с этой проблемой.

В оригинальном классе Bar:

class Bar extends Foo {

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

Мне просто нужно было установить свойство ‘output’ следующим образом:

class Bar extends Foo {

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

Надеюсь, что это полезно!

15

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]