laravel在cli模式下輸出格式漂亮一些

在 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…