Package Data | |
---|---|
Maintainer Username: | code16 |
Maintainer Contact: | remi@code16.fr (Rémi Collin) |
Package Create Date: | 2017-08-29 |
Package Last Update: | 2020-06-26 |
Language: | PHP |
License: | MIT |
Last Refreshed: | 2024-11-23 03:01:30 |
Package Statistics | |
---|---|
Total Downloads: | 2,246 |
Monthly Downloads: | 1 |
Daily Downloads: | 0 |
Total Stars: | 2 |
Total Watchers: | 3 |
Total Forks: | 0 |
Total Open Issues: | 0 |
This is a simple trait to allow a third party class to output to an artisan console.
Useful when implementing heavy procedural scripts which code is shared with other part of the application, or just written in its own class for easier testability.
It simply redirects the info()
, error()
, comment()
, table()
and progressBar()
methods to the command object set by calling the public setConsole()
method of the trait, or just pass-through if no command object is set.
Using the trait in a custom script :
namespace App\Tools;
use Code16\WriteToConsole\WriteToConsole;
class DataImporter
{
use WriteToConsole;
public function execute()
{
$this->info("Import started");
$progress = $this->progressBar(100);
for($x=0;$x<100;$x++) {
$progress->advance();
}
$this->info("Import finished");
}
}
Calling the script from an artisan console command :
<?php
namespace App\Console\Commands;
use Illuminate\Console\Command;
use App\Tools\DataImporter;
class DataImportsCommand extends Command
{
/**
* The name and signature of the console command.
*
* @var string
*/
protected $signature = 'data:import';
/**
* The console command description.
*
* @var string
*/
protected $description = 'Import DATA';
/**
* Create a new command instance.
*
* @return void
*/
public function __construct()
{
parent::__construct();
}
/**
* Execute the console command.
*
* @return mixed
*/
public function handle()
{
$importer = app(DataImporter::class);
$importer->setConsole($this);
$importer->execute();
}
}
WriteToConsole
also accepts a Psr-3 compatible logger as additionnal argument. Therefore every methods, excepts table() and progressBar(), will be redirected to the logger.
public function handle()
{
$importer = app(DataImporter::class);
$importer->setConsole($this);
$logger = app(\Psr\Log\LoggerInterface::class);
$importer->setLogger($logger);
$importer->execute();
}
MIT
(c) 2018 Code16.fr