paulhenri-l/laravel-task-runner

帮助您将命令工作流组合成一系列任务

3.1.1 2021-08-14 16:01 UTC

This package is auto-updated.

Last update: 2024-09-14 22:36:24 UTC


README

Tests License: MIT

此工具可以帮助您在命令中运行一组定义的任务。在您的命令需要依次运行不同的操作时非常有用。

此工具在LaravelEnginePHL Console 中都有使用。

示例

php artisan my-command

[Some\Namespace\MyFirstTask]
Hello from MyFirstTask.

[Some\Namespace\MySecondTask]
MySecondTask Complete.

Installation done 🎉

安装

composer require paulhenri-l/laravel-task-runner

用法

为了使用TaskRunner,您需要将CanRunTasks特质添加到您的命令中,并调用runTasks方法。

唯一的参数是您要运行的任务数组。任务是一个可调用的类。您可以传递任务的实例或其类名。

如果传递类名,任务将通过Laravel的容器解析,因此您可以在任务的构造函数中为任何依赖进行类型提示。

使用特质

<?php

class FakeCommand extends Illuminate\Console\Command
{
    use PaulhenriL\LaravelTaskRunner\CanRunTasks;

    protected $signature = 'my-command';

    /**
     * Execute the console command.
     */
    public function handle()
    {
        $this->runTasks([
            MyFirstTask::class,
            new MySecondTask()
        ]);

        $this->info('Installation done 🎉');
    }
}

编写任务

<?php

use Illuminate\Console\Command;
use PaulhenriL\LaravelTaskRunner\TaskInterface;

class MyFirstTask implements TaskInterface
{
    public function __construct(SomeDependency $someDependency)
    {
        //
    }

    public function __invoke(Command $command)
    {
        $command->info('Hello from MyFirstTask.');
    }
}

提前终止

如果您想提前终止,只需从您的任务中返回false即可。

<?php

use Illuminate\Console\Command;
use PaulhenriL\LaravelTaskRunner\TaskInterface;

class SomeTask implements TaskInterface
{
    public function __invoke(Command $command)
    {
        if ($thereIsAnError) {
            return false;
        }
    }
}