code16 / write-to-console
Simple Trait to interact with artisan console from any PHP class
Installs: 2 245
Dependents: 0
Suggesters: 0
Security: 0
Stars: 2
Watchers: 3
Forks: 0
Open Issues: 0
Requires
- illuminate/console: 5.5.*|5.6.*|5.7.*|5.8.*|^6.0|^7.0
- illuminate/support: 5.5.*|5.6.*|5.7.*|5.8.*|^6.0|^7.0
Requires (Dev)
- orchestra/testbench: 3.5.*|3.6.*|3.7.*|3.8.*|4.*|5.*
- phpunit/phpunit: ~6.0|~7.0|^8.5
This package is auto-updated.
Last update: 2024-10-26 21:52:28 UTC
README
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.
Example
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(); } }
Output text to a logger
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();
}
License
MIT
(c) 2018 Code16.fr