Я только начинаю с основных понятий ОО в 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
, Почему я не могу вызвать метод родителя из дочернего класса?
Я также столкнулся с этой проблемой и чувствовал, что отзывы Марцина были холодными и бесполезными, особенно в его комментариях. Для этого я с удовольствием отвечу этим ответом вам и всем, кто сталкивается с этой проблемой.
В оригинальном классе 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');
}
}
Надеюсь, что это полезно!
Других решений пока нет …