code16/write-to-console

一个简单的Trait,用于任何PHP类与Artisan控制台交互

v1.1 2020-06-26 12:29 UTC

This package is auto-updated.

Last update: 2024-09-26 21:38:42 UTC


README

这是一个简单的Trait,允许第三方类向Artisan控制台输出。

当实现重型过程脚本,代码与其他应用程序部分共享,或者只是为了更容易的可测试性而独立编写在类中时,非常有用。

它简单地将info()error()comment()table()progressBar()方法重定向到通过调用Trait的公共setConsole()方法设置的命令对象,如果没有设置命令对象,则直接传递。

示例

在自定义脚本中使用Trait

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");
	}

}

从Artisan控制台命令中调用脚本

<?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还接受一个Psr-3兼容的记录器作为额外的参数。因此,除了table()和progressBar()方法外,所有方法都将重定向到记录器。

    public function handle()
    {   
        $importer = app(DataImporter::class);
        $importer->setConsole($this);

        $logger = app(\Psr\Log\LoggerInterface::class);
        $importer->setLogger($logger);

        $importer->execute();

    }

许可证

MIT

版权所有 © 2018 Code16.fr