Laravel Команда $ info переопределяет метод и при попытке вызвать родительский метод запускает дочерний метод дважды - PullRequest
0 голосов
/ 18 марта 2020

Настройка класса консольной команды:

MyCommand extends Tasks 
{
   protected function task()
   {
      $this->info('test');
   }
}


Tasks extends Illuminate\Console\Command {

   public function log($string) {
      Storage::disk('local')->append($filename,$string);
   }

   public function info($string, $verbosity = NULL)
   {
      $this->log($string);

      // this doesnt work, because it just loops back to this info
      // parent::info($string, $verbosity);

      // why is this still looping back here?
      Command::info($string, $verbosity);
   }

    public function line($string, $style = null, $verbosity = null)
    {
       $this->log($string);
       Command::line($string, $style, $verbosity);
    }

}

Возможно, я слишком долго смотрю на код и вижу очевидный ответ.

Что необычно, независимо от того, как я пытаюсь получить доступ к методу в родительском Command классе,

I не может вызвать исходный метод в Command без дочерний метод выполняется дважды или бесконечно много раз. ,

Либо с использованием Command::, либо parent::, либо static::, все из которых только что зациклились, либо вызывая бесконечное l oop, либо вызывая для запуска метода log() несколько раз.

Мне кажется, laravel выполняет родительское действие, а затем автоматически выполняет дочерние действия.

Если я не вызываю родительский метод, он прекрасно печатается в журнале, однако вывод в консоли не будет отображаться, так как он не вызывает родительский метод. Единственный другой вариант, который у меня остался, это не переопределять эти методы (но это значит, что мне нужно go вернуться назад и настроить все мои команды)

РЕДАКТИРОВАТЬ: Добавлены остальные код

ОБНОВЛЕНИЕ: РЕШЕНО! Глядя на исходный код Command, info вызывает line, и поэтому кажется, что он дублирует результаты.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...