ashallendesign/laravel-command-spinner

此包已弃用,不再维护。未建议替代包。

为Laravel Artisan命令添加加载旋转器的包。

v0.1.0 2021-04-24 22:18 UTC

This package is auto-updated.

Last update: 2024-03-19 11:16:46 UTC


README

Laravel Command Spinner

Latest Version on Packagist Total Downloads PHP from Packagist GitHub license

目录

概述

一个允许您为Artisan命令添加47种不同样式的加载旋转器的Laravel包。

安装

需求

该包已开发和测试,以与以下最低要求兼容

  • PHP 8
  • Laravel 8

安装包

您可以通过Composer安装此包

composer require ashallendesign/laravel-command-spinner

使用

为命令添加加载旋转器

在执行长时间运行的命令(例如从API获取数据)时,使用加载旋转器可能会有所帮助。

要将加载旋转器添加到您的命令中,首先将HasSpinner特质添加到您的命令中。然后,您可以使用withSpinner()方法,如下例所示

use AshAllenDesign\CommandSpinner\Traits\HasSpinner;

class YourCommand extends Command
{
    use HasSpinner;

    public function handle(): int
    {
        $this->withSpinner(function () {
            // Run your code here.
        });
    }
}

为旋转器添加文本

当您在控制台命令中显示加载旋转器时,您可能还想显示一条消息。

以下示例显示了如何添加要在加载旋转器旁边显示的文本

use AshAllenDesign\CommandSpinner\Traits\HasSpinner;

class YourCommand extends Command
{
    use HasSpinner;

    public function handle(): int
    {
        $this->withSpinner(function () {
            // Run your code here.
        }, 'Fetching data from API...');
    }
}

自定义旋转器类型

该包自带许多类型的加载旋转器,您可以立即使用。要查看所有可能的加载旋转器,请查看SpinnerType类。

以下示例显示了如何选择不同的旋转器类型

use AshAllenDesign\CommandSpinner\Classes\SpinnerType;
use AshAllenDesign\CommandSpinner\Traits\HasSpinner;

class YourCommand extends Command
{
    use HasSpinner;

    public function handle(): int
    {
        $this->withSpinner(function () {
            // Run your code here.
        }, 'Fetching data from API...', SpinnerType::BLOCK_VARIANT_1);
    }
}

示例

以下示例显示了您可以使用PHP 8命名参数将旋转器添加到命令中

use AshAllenDesign\CommandSpinner\Classes\SpinnerType;
use AshAllenDesign\CommandSpinner\Traits\HasSpinner;

class YourCommand extends Command
{
    use HasSpinner;

    public function handle(): int
    {
        $this->withSpinner(
            closure: function () {
                $this->fetchDataFromAPI();
            },
            outputText: 'Fetching data from API...',
            spinnerType: SpinnerType::BLOCK_VARIANT_1
        );
    }
}

在以下示例中,让我们假设我们有一个计算某个值并返回结果的类。因此,我们在计算时显示加载旋转器,然后在返回时输出结果。

use AshAllenDesign\CommandSpinner\Traits\HasSpinner;

class YourCommand extends Command
{
    use HasSpinner;

    public function handle(): int
    {
        $result = $this->withSpinner(function () {
            return (new Calculator)->calculate();
        });
        
        $this->line($result);
    }
}

注意事项

以下是我目前所知道的几个注意事项列表

  • 此包的功能基于目前正在积极开发的spatie/fork包。因此,如果fork包在最初发布之前被更新,此包的功能可能会发生变化。

  • 由于该包基于fork包,每次创建旋转器时都会创建2个子PHP进程。其中一个处理旋转动画,另一个执行传入的闭包。这意味着由于闭包在子进程中执行,因此它无法直接更改命令类本身中的任何数据。

  • 目前,withSpinner()方法仅允许返回原始类型。因此,您目前无法返回对象。

安全

如果您发现任何安全相关的问题,请直接通过mail@ashallendesign.co.uk与我联系以报告。

贡献

如果您想对该包进行任何更改或改进,请随时提交pull request。

在提交pull request之前,请使用以下指南为向此库贡献

  • 为新增的任何新功能编写测试。如果你正在更新现有代码,请确保现有测试通过,并在需要时编写更多测试。
  • 遵循PSR-2编码标准。
  • 将所有拉取请求提交到master分支。

许可证

MIT许可(MIT)。请参阅许可文件获取更多信息。