问题
I have a console command that runs a helper class and I want to write output with $this->info()
to the console from the helper class.
My code looks like this:
App/Http/Console/Commands/SomeCommand.php
function handle(Helper $helper)
{
return $helper->somefunction();
}
App/Http/SomeHelper.php
function somefunction()
{
//some code
$this->info('send to console');
}
Is there any way to write the output to console from the helper?
回答1:
I finally figured this out (works in Laravel 5.6)
In the handle()
function of your SomeCommand class, add $this->myHelper->setConsoleOutput($this->getOutput());
.
In your helper class, add:
/**
*
* @var \Symfony\Component\Console\Style\OutputStyle
*/
protected $consoleOutput;
/**
*
* @param \Symfony\Component\Console\Style\OutputStyle $consoleOutput
* @return $this
*/
public function setConsoleOutput($consoleOutput) {
$this->consoleOutput = $consoleOutput;
return $this;
}
/**
*
* @param string $text
* @return $this
*/
public function writeToOuput($text) {
if ($this->consoleOutput) {
$this->consoleOutput->writeln($text);
}
return $this;
}
/**
*
* @param string $text
* @return $this
*/
public function writeErrorToOuput($text) {
if ($this->consoleOutput) {
$style = new \Symfony\Component\Console\Formatter\OutputFormatterStyle('white', 'red', ['bold']); //white text on red background
$this->consoleOutput->getFormatter()->setStyle('error', $style);
$this->consoleOutput->writeln('<error>' . $text . '</error>');
}
return $this;
}
Then, anywhere else in your helper class, you can use:
$this->writeToOuput('Here is a string that I want to show in the console.');
回答2:
You need to write $this->info('send to console');
this in SomeCommand.php file.For writing output follow this https://laravel.com/docs/5.2/artisan#writing-output
回答3:
I have not tried, but maybe: $this->line("sent to console');
来源:https://stackoverflow.com/questions/37658345/write-output-to-console-from-helper-class