ashallendesign / laravel-command-spinner
为Laravel Artisan命令添加加载旋转器的包。
Requires
- php: ^8.0
- ext-json: *
- illuminate/cache: ^8.0
- illuminate/console: ^8.0
- illuminate/support: ^8.0
- spatie/fork: ^0.0.2
Requires (Dev)
- mockery/mockery: ^1.0
- orchestra/testbench: ^3.8|^4.0|^5.0|^6.0
- phpunit/phpunit: ^8.2
This package is auto-updated.
Last update: 2024-03-19 11:16:46 UTC
README
目录
概述
一个允许您为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)。请参阅许可文件获取更多信息。