iT邦幫忙

2024 iThome 鐵人賽

DAY 24
0
Software Development

Laravel 隨筆學習札記系列 第 24

Day24 - 掌握 Laravel 11 Artisan:開發者的最佳夥伴!

  • 分享至 

  • xImage
  •  

知道嗎?在 Laravel 世界裡,有一位神秘的助手,名叫 Artisan!

能幫助生成代碼,還能讓開發過程變得更加高效,快一起探索 Artisan 的魔法吧!


✨ 為什麼需要 Artisan?

自動化任務

Artisan 是 Laravel 框架內建的命令行工具,可以幫忙自動生成代碼,像是生成模型、控制器和資料庫遷移 。

指令很方便

只需在命令行中輸入指令,就能執行各種操作。像是,輸入 php artisan serve,就能啟動開發的伺服器。

自定義命令

Artisan 支援自定義命令,可以寫出符合自己需求的指令。


🚀 使用 Artisan 的小提示

查看可用指令

輸入 php artisan list ,就能看到一個指令清單,喚起我們的記憶,看看有什麼功能可以使用。

https://ithelp.ithome.com.tw/upload/images/20241008/20169308Wmm1trqK3I.png

文檔使用說明

若是對某個指令有疑問,輸入 php artisan help <command> 就會跟我們說說如何使用!

  • php artisan help 為例

    說明:顯示某個命令可以幫助我們的訊息。

    使用指令:

    # command_name:要顯示幫助的命令名稱
    help [options] [--] [<command_name>]
    

    產生畫面:
    https://ithelp.ithome.com.tw/upload/images/20241008/20169308x3cokiOhQc.png

  • php artisan help make:controller 為例

    說明:我們創建一個新的控制器類。

    使用指令:

    # name:指定要創建的控制器的名稱
    make:controller [options] [--] <name>
    

    產生畫面:
    https://ithelp.ithome.com.tw/upload/images/20241008/20169308oHy1m6QJZK.png


🔍 來看看有哪些常用的指令

基本指令

我們使用指令 php artisan ,就是在說我們使用 php 去執行 artisan 這個檔案

指令 說明
php artisan help 顯示所有可用指令的幫助信息。
php artisan list 列出所有可用的 Artisan 指令。
  • 資料庫操作
指令 說明
php artisan migrate 執行所有未執行的資料庫遷移。
php artisan migrate:rollback 回滾最近的資料庫遷移。
php artisan migrate:status 顯示所有遷移的狀態。
php artisan db:seed 執行資料庫填充器,填入測試數據。
  • 生成 model、controller、migration、resource
指令 說明
php artisan make:model ModelName 創建一個新的 Eloquent 模型。
php artisan make:controller ControllerName 創建一個新的控制器。
php artisan make:migration create_table_name 創建一個新的遷移文件。
php artisan make:resource ResourceName 創建一個新的 API 資源。
  • 伺服器管理
指令 說明
php artisan serve 啟動內建的 PHP 伺服器,預設在 http://localhost:8000
  • cache、config
指令 說明
php artisan config:cache 將所有配置緩存到單個文件中,提高性能。
php artisan cache:clear 清除緩存的數據。
php artisan route:clear 清除路由快取。
  • tinker、enum
指令 說明
php artisan tinker 啟動 Tinker REPL,方便即時測試代碼。
php artisan make:enum EnumName 創建一個新的列舉(enum)。

📍簡單說說 Laravel Tinker

Laravel Tinker 是一個強大的 REPL(Read-Eval-Print Loop)工具,允許開發者在命令行中直接與 Laravel 應用程序互動。它基於 PsySH,提供了一個友好的環境來測試代碼、執行查詢和操作 Eloquent 模型。

使用方式

  • 啟動 Tinker

    php artisan tinker
    
  • 退出 Tinker

    exit
    

可以使用的功能

  • 交互式環境
    Tinker 提供了一個即時的交互式環境,讓我們可以隨時執行 PHP 代碼,並立即看到結果。就是說我們不需要創造環境,不需要打開 vscode,就可以直接在終端機中輸入內容測試代碼。

    • 舉例:想測試簡單的數學運算,只需在 Tinker 中輸入:

      echo 1 + 1; // 返回 2
      
  • 操作 Eloquent 模型
    透過 Tinker,可以輕鬆地與資料庫中的 Eloquent 模型互動。比如創建新用戶、查詢資料或更新紀錄,全部都可以在 Tinker 中完成。

    • 舉例:創建一個新用戶,可以這樣寫:
      然後查詢所有用戶:

      $user = new App\\Models\\User;
      $user->name = 'John Doe';
      $user->email = 'john@example.com';
      $user->save();
      
      App\\Models\\User::all();
      
  • 執行 Artisan 命令
    Tinker 允許執行一些常用的 Artisan 命令,這樣你就可以在命令行中進行維護和測試。這對於快速清理資料或檢查應用狀態特別有用。

    • 舉例:如果你想清理快取,可以直接在 Tinker 中運行:

      Artisan::call('config:clear');
      

💡自定義 Artisan

自訂命令概述

在 Laravel 中,除了Artisan 提供的命令外,我們也可以創建自訂的命令來擴展 Artisan 功能。這些命令通常存放在 app/Console/Commands 目錄中。

Generating Commands

可以使用 make:command Artisan 指令來創建新命令。

php artisan make:command SendEmails

Command Structure

生成命令後,你需要為類別中的 signaturedescription 屬性設置適當的值,這些值會在命令列表中顯示。signature 屬性用於定義 Artisan 命令的輸入要求,在 handle 方法寫入命令的邏輯,當運行這個命令時,這個方法中的邏輯會被執行。

class SendEmails extends Command
{
    protected $signature = 'mail:send {user}';
    protected $description = 'Send a marketing email to a user';

		// 注入了 DripEmailer 服務,讓它負責實際的郵件發送工作
    public function handle(DripEmailer $drip): void
    {	    
        $drip->send(User::find($this->argument('user')));
    }
}

Exit Codes

  • 成功執行 (0):如果 handle 方法執行成功且沒有返回值,則命令會以 0 退出,表示成功。
  • 手動指定錯誤代碼:可以手動返回整數作為退出代碼
$this->error('Something went wrong.');
return 1;
  • 立即終止命令:可以使用 fail 方法,通常用於無法繼續執行的情況
$this->fail('Something went wrong.');
參考資料:

Laravel 11 的 Artisan 是開發者的小幫手,能提升開發效率,透過命令和 Tinker 工具,我們可以輕鬆測試和操作代碼。善用 Artisan 的功能,讓我們的開發之路更更上一層樓吧!


參考資料:

  1. Laravel Artisan 以及 Command
  2. How to Create Custom Commands in Laravel 11 with PHP Artisan
  3. Laravel官方網站:Artisan Console

踏著身心靈的塔羅腳步,轉向技術與邏輯的工程師之路,就藉由塔羅日抽來紀錄今日的學習與生活吧!

寶劍騎士:Laravel 11 的 Artisan 功能可以就像寶劍騎士的敏捷與靈活,能迅速應對挑戰

“Have faith in your dreams and someday, your rainbow will come smiling
through! No matter how your heart is grieving, if you keep on believing,
the dream that you wish will come true.”

對你的夢想有信心,總有一天,你的彩虹會微笑著走過來!無論你的心有多悲痛,只要你繼續相信,你所希望的夢想就會成真。

— Cinderella


上一篇
Day23 - 什麼時候該讓 Laravel Validation 出馬?
下一篇
Day25 - 善用 Laravel Events 提升代碼重用性
系列文
Laravel 隨筆學習札記30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言