在 Laravel 的 CLI 模式下,可以通过以下方式让命令行输出更加美观和专业:

1. 使用 Artisan 输出助手方法

Laravel 提供了多种输出样式方法:

public function handle()
{// 基础样式$this->info('成功信息 - 绿色');    // 绿色$this->error('错误信息 - 红色');   // 红色$this->line('普通信息 - 无颜色');  // 默认色$this->comment('注释信息 - 黄色'); // 黄色$this->question('问题信息 - 蓝绿色'); // 蓝绿色// 带背景色$this->line('<bg=green>绿色背景</>');$this->line('<bg=red;fg=white>红底白字</>');// 自定义样式$this->line('<fg=magenta;bg=cyan;options=bold,underscore>紫色粗体带下划线</>');
}

2. 表格输出

展示结构化数据:

public function handle()
{$headers = ['ID', 'Name', 'Email'];$data = [[1, 'John Doe', 'john@example.com'],[2, 'Jane Smith', 'jane@example.com'],[3, 'Bob Johnson', 'bob@example.com'],];$this->table($headers, $data);
}

3. 进度条

长时间任务显示进度:

public function handle()
{$total = 100;$bar = $this->output->createProgressBar($total);for ($i = 0; $i < $total; $i++) {usleep(50000); // 模拟任务$bar->advance();}$bar->finish();$this->newLine(2); // 空两行$this->info('任务完成!');
}

4. 交互式命令

创建用户友好的交互:

public function handle()
{// 询问输入$name = $this->ask('请输入您的姓名');// 密码输入(隐藏字符)$password = $this->secret('请输入密码');// 确认提示if ($this->confirm('确定要执行此操作吗?')) {// 选择列表$role = $this->choice('选择角色', ['Admin', 'Editor', 'Viewer'], 1);$this->info("用户 $name 将创建为 $role");} else {$this->error('操作已取消');}
}

5. 高级格式化

使用输出样式块:

public function handle()
{// 标题块$this->output->title('系统初始化');// 章节标题$this->output->section('数据库迁移');// 任务列表$this->output->writeln('<comment>执行任务:</comment>');$this->output->listing(['创建用户表','创建订单表','创建产品表']);// 水平线$this->output->newLine();$this->output->horizontalLine();// 结果输出$this->output->success('操作成功完成');$this->output->warning('注意:需要重启服务');$this->output->note('最后更新:2023-06-01');$this->output->caution('敏感操作需授权');
}

6. 完整示例 - 优雅的命令行工具

<?phpnamespace App\Console\Commands;use Illuminate\Console\Command;
use Symfony\Component\Console\Helper\Table;class UserExport extends Command
{protected $signature = 'export:users {--limit=50 : 导出数量}{--format=csv : 导出格式 [csv, json, table]}';protected $description = '导出用户数据到文件';public function handle(){$this->output->title('用户数据导出工具');// 验证选项$format = $this->option('format');if (!in_array($format, ['csv', 'json', 'table'])) {$this->error("不支持的格式: $format");return 1;}$limit = (int)$this->option('limit');$this->info("准备导出 $limit 条用户数据...");// 模拟数据获取$users = $this->getUsers($limit);// 进度条$bar = $this->output->createProgressBar(count($users));$bar->start();// 处理数据$results = [];foreach ($users as $user) {$results[] = [$user['id'],$user['name'],$user['email'],$user['created_at']];$bar->advance();}$bar->finish();$this->newLine(2);// 输出结果switch ($format) {case 'table':$this->table(['ID', 'Name', 'Email', 'Created'], $results);break;case 'json':$this->line(json_encode($results, JSON_PRETTY_PRINT));break;case 'csv':$filename = "users_".date('Ymd_His').'.csv';$this->saveCsv($filename, $results);$this->info("数据已导出到: $filename");break;}$this->output->success('导出操作成功完成');return 0;}private function getUsers($limit){// 模拟数据库查询return array_map(function ($i) {return ['id' => $i + 1,'name' => "User $i",'email' => "user$i@example.com",'created_at' => now()->subDays($i)->format('Y-m-d')];}, range(1, $limit));}private function saveCsv($filename, $data){$handle = fopen($filename, 'w');fputcsv($handle, ['ID', 'Name', 'Email', 'Created']);foreach ($data as $row) {fputcsv($handle, $row);}fclose($handle);}
}

7. 使用技巧和最佳实践

  1. 颜色方案

    // 标准颜色:black, red, green, yellow, blue, magenta, cyan, white
    $this->line('<fg=cyan>青色文字</>');// 自定义颜色(支持256色)
    $this->line('<fg=#ff9900>橙色文字</>');
    
  2. 样式组合

    $this->line('<fg=white;bg=red;options=bold,underscore>白字红底粗体带下划线</>');
    
  3. 响应式布局

    // 获取终端宽度
    $width = $this->output->getTerminalWidth();
    $this->line(str_repeat('-', $width));
    
  4. 多栏布局

    $this->output->writeln(['<info>多行输出示例:</info>','第一行内容','第二行内容',
    ]);
    
  5. 调试信息

    $this->output->writeln('<debug>调试信息</>');
    
  6. 自定义输出样式

    $this->output->getFormatter()->setStyle('highlight', new OutputFormatterStyle('red', 'yellow', ['bold']));
    $this->line('<highlight>自定义样式文本</highlight>');
    

这些技巧可以让你的 Laravel 命令行工具:

  • 提供专业美观的用户界面
  • 增强用户体验和可读性
  • 清晰展示操作进度和结果
  • 支持多种输出格式和交互方式
  • 适配不同终端尺寸和颜色支持

使用这些方法,你可以创建出既实用又美观的 CLI 应用,提升开发体验和工具的专业性。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/news/918078.shtml
繁体地址,请注明出处:http://hk.pswp.cn/news/918078.shtml
英文地址,请注明出处:http://en.pswp.cn/news/918078.shtml

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

大数据管理与应用学什么?就业前景怎么样?

前言在数字经济蓬勃发展的今天&#xff0c;大数据已经成为推动社会进步的核心生产要素。大数据管理与应用作为新兴交叉学科&#xff0c;正受到越来越多学生和企业的关注。本文将全面剖析该专业的课程体系、核心技能要求&#xff0c;详细介绍CDA数据分析师认证的备考策略&#x…

mac笔记本如何重新设置ssh key

要在Mac上重新生成SSH密钥并将其添加到平台&#xff0c;可以按照以下步骤操作&#xff1a; 打开终端 在Mac上&#xff0c;你可以通过Spotlight搜索&#xff08;按Command Space&#xff09;输入Terminal来打开终端或者直接搜索终端检查现有SSH密钥 首先&#xff0c;检查是否已…

Godot ------ 通过鼠标对节点进行操作

Godot ------ 通过鼠标对节点进行操作 引言 正文 引言 对于一个游戏,通过鼠标对游戏对象进行操作是非常普遍的行为,本文我们将以 Control 节点进行举例,说明如何通过鼠标对 Control 节点进行移动操作。 正文 首先,我们创建一个 Contorl 节点,并将它的 Layout->Trans…

k8s 网络插件 flannel calico

一、k8s 网络概述 Kubernetes网络是指在Kubernetes集群中不同组件之间进行通信和交互的网络架构&#xff0c;每个容器都有自己的IP地址&#xff0c;这些容器组成了Pod&#xff0c;Pod是Kubernetes调度的最小单元。 Pod是Kubernetes中最小的部署单元&#xff0c;每个Pod都有一个…

易美教育荣膺“腾讯年度影响力国际教育品牌”双奖加冕,见证中国国际教育力量的崛起

【腾讯新闻&#xff0c;北京讯】在刚刚圆满落幕的“回响中国”腾讯新闻教育频道年度论坛上&#xff0c;国际教育领域迎来了高光时刻&#xff1a;以美国华尔街为总部、深耕国际教育十余年的易美教育&#xff08;Easymay&#xff09;&#xff0c;凭借其持续创新的教育模式、国际化…

Chrome与Firefox浏览器安全运维配置命令大全:从攻防到优化的专业实践

Chrome与Firefox浏览器安全运维配置命令大全&#xff1a;从攻防到优化的专业实践 作者&#xff1a;高级网络安全工程师 吉林•镇赉融媒 刘晓伟 最后更新&#xff1a;2025年8月 适用对象&#xff1a;网络安全、运维从业者 浏览器作为访问互联网资源的主要入口&#xff0c;其配置…

用 “故事 + 价值观” 快速建立 IP 信任感

在知识变现、流量变现与粉丝变现的实践中&#xff0c;IP 的核心竞争力在于用户信任。“故事 价值观” 的组合&#xff0c;能快速缩短与用户的距离 —— 故事让 IP 从抽象符号变为可感知的存在&#xff0c;价值观则推动用户从被动关注转为主动认同&#xff0c;二者共同为变现筑…

PDF处理控件Aspose.PDF教程:使用 C#、Java 和 Python 代码调整 PDF 页面大小

使用 Aspose.PDF 调整 PDF 大小 Aspose.PDF 是一个功能强大且灵活的库&#xff0c;旨在跨多个平台&#xff08;包括 .NET、Java 和 Python&#xff09;处理 PDF 文件。在调整 PDF 大小方面&#xff0c;它提供了对页面尺寸和内容缩放的完全控制。无论您是想缩小 PDF 大小、将页…

Django 表单:深度解析与最佳实践

Django 表单:深度解析与最佳实践 引言 Django 是一个强大的 Python Web 框架,它提供了丰富的功能,包括表单处理。表单是 Web 应用中不可或缺的一部分,用于收集用户输入的数据。本文将深入探讨 Django 表单的使用,包括其结构、功能以及最佳实践。 Django 表单概述 Djan…

Claude Code MCP 网络搜索配置命令

🔧 Windows vs Linux 配置区别 Windows 配置特点: 使用 "cmd" 作为命令 需要 "/c" 参数来执行命令 路径分隔符使用反斜杠 \ Linux/macOS 配置特点: 直接使用命令名(如 "npx", "uvx") 不需要 /c 参数 路径分隔符使用正斜杠 / �…

20250808 C++ 不使用三方库,在 RGB 图像上打印信息

先看效果直接上代码 // ********************************************* // FileName: text_overlay.hpp // Brief: // // Date: 8 Aug. 2025 // Author: ... // *********************************************#ifndef TEXT_OVERLAY_HPP #define TEXT_OVERLAY_HPP#include &…

前端开发(HTML,CSS,VUE,JS)从入门到精通!第八天(Vue框架及其安装)(完结篇) 重点 ! ! !

十三、Vue 单文件组件1&#xff0e;在前面学习的传统组件存在以下问题&#xff1a;&#xff08;1&#xff09;全局定义的组件必须保证组件名不能重复。&#xff08;2&#xff09;字符串的模板缺乏高亮语法&#xff0c;在写多行 HTML 片段的时候&#xff0c;需要用到丑陋的 ”\”…

2025最新国内服务器可用docker源仓库地址大全(2025年8月更新) · DockerHub镜像加速全面指南

2025最新国内服务器可用docker源仓库地址大全&#xff08;2025年8月更新&#xff09; DockerHub镜像加速全面指南 2025年8月&#xff0c;随着云原生技术的深入普及&#xff0c;开发者在使用 Docker 拉取 镜像 时&#xff0c;经常遭遇 超时、镜像下载失败、无法拉取 等网络瓶颈…

GitLab同步提交的用户设置

内容&#xff1a;在GitLab同步提交的用户设置中&#xff0c;部分用户的代码提交仍未与GitLab同步&#xff0c;导致无法在GitLab上显示提交者的用户名。1、检查下gitlab账户的设置 登录gitlab后&#xff0c;右上角个人头像点开后&#xff0c;可以看到姓名和账户2、不对的话&…

Web 图像捕获革命:ImageCapture API 全面解析与实战指南

概述 ImageCapture API 是 Web API 的一部分&#xff0c;允许网页应用直接访问和控制设备摄像头&#xff0c;实现高质量的图像捕获功能。该 API 提供了比传统的 getUserMedia() 更精细的控制能力&#xff0c;支持设置分辨率、白平衡、曝光等参数。 核心特性 1. 高质量图像捕…

ASP.NET三层架构成绩管理系统源码

一、系统简介 本次设计的成绩管理系统是基于ASP.NET WebForm技术开发的Web应用程序&#xff0c;采用经典的三层架构&#xff08;表示层、业务逻辑层、数据访问层&#xff09;设计模式&#xff0c;结合前端HTML、JavaScript、jQuery及ECharts图表库&#xff0c;后端使用C#语言、…

Linux 内存管理之page folios

文章目录前言一、简介struct folio二、page folios的好处2.1 compound page2.2 page cache三、buffer_head、iomap与page folios四、何时分配 Large Folio五、folio结构体演变六、内核主线folio的逐步使用参考资料前言 Linux 内核的内存管理子系统以“页”&#xff08;page&am…

[优选算法专题一双指针——两数之和](双指针和哈希表)

题目链接 LeetCode两数之和 题目描述 题目解析 注意&#xff1a;前提条件&#xff1a;输入的数组numbers是已排序的。 核心思路&#xff1a;双指针法 利用数组已排序的特性&#xff0c;通过两个指针从两端向中间移动&#xff0c;快速定位符合条件的两个数&#xff0c;时间…

佳维视高亮度工业显示器,强光环境清晰可见

在工业、户外或高光照场景中&#xff0c;普通显示器常因环境光干扰导致画面模糊、色彩失真&#xff0c;甚至无法操作。高亮度工业显示器通过技术优化与专业设计&#xff0c;突破光线限制&#xff0c;确保在强光下仍能呈现清晰、稳定的视觉效果&#xff0c;成为关键任务环境中的…

系统的缓存(buff/cache)是如何影响系统性能的?

系统的缓存&#xff08;buff/cache&#xff0c;包括 buffer 和 cache&#xff09;是 Linux 内核为提升系统性能设计的关键机制&#xff0c;其对性能的影响主要体现在加速数据访问和平衡内存与磁盘速度差异上&#xff0c;具体如下&#xff1a; 一、buff/cache 的本质&#xff1a…