🧭 AI Debug & 開發提示詞範本庫(Laravel 專用)
這份範本庫提供一系列標準化的提示詞,幫助 PHP/Laravel 開發者在 Debug、功能開發與進階應用中高效利用 AI 作為程式副駕駛。範本適用於 Laravel 10/11 與 PHP 8.x 環境,可直接複製並根據需求修改。範本分為三大類:Debug、功能開發與進階應用,每個範本包含背景說明、提示詞範例與使用建議,確保 AI 回應精準且實用。
🐞 Debug 範本
1. 錯誤訊息分析
用途:快速診斷 Laravel 應用中的錯誤訊息,特別是資料庫、驗證或依賴注入問題。
提示詞:
我在 Laravel 10 專案中遇到以下錯誤:
- 環境:PHP 8.2, Laravel 10, MySQL 8, Redis 6
- 錯誤訊息:[貼上完整錯誤訊息]
- 相關程式碼:
```php
[貼上觸發錯誤的程式碼]
- 期待行為:[描述希望達到的功能]
- 實際行為:[描述當前錯誤或異常輸出]
請分析錯誤原因,提供具體修正建議,並解釋問題的底層原理(如資料庫連線、ORM 或依賴注入)。
**使用建議**:
- 提供完整的錯誤堆疊(Stack Trace)與環境資訊。
- 明確描述期待與實際行為,幫助 AI 定位問題。
- 要求底層原理解釋(如 Laravel 的 Eloquent 或 Service Container),以加深理解。
**範例**:
我在 Laravel 10 專案中遇到以下錯誤:
- 環境:PHP 8.2, Laravel 10, MySQL 8
- 錯誤訊息:SQLSTATE[42S22]: Column not found: 1054 Unknown column 'age'
- 相關程式碼:
User::where('age', '>', 18)->get();
- 期待行為:查詢年齡大於 18 的使用者
- 實際行為:報錯,提示找不到 age 欄位
請分析錯誤原因,提供修正建議,並解釋 Laravel Eloquent 的查詢機制。
---
### 2. 程式碼邏輯錯誤
**用途**:找出 Laravel 控制器、服務或前端邏輯中的錯誤,特別是業務邏輯或資料處理問題。
**提示詞**:
以下是我的 Laravel 程式碼片段:
[貼上程式碼]
- 環境:PHP 8.2, Laravel 10, [其他相關技術如 Vue]
- 期待行為:[描述預期的功能或輸出]
- 實際行為:[描述實際的錯誤輸出或行為]
請檢查程式碼,找出邏輯錯誤,提供修正建議,並解釋錯誤原因(如狀態管理、資料流或邏輯判斷)。
**使用建議**:
- 提供完整的程式碼上下文(例如控制器、模型或前端組件)。
- 描述輸入與輸出,幫助 AI 理解邏輯問題。
- 若涉及前端(如 Vue),說明狀態管理(Pinia)或事件處理。
**範例**:
以下是我的 Laravel 程式碼片段:
public function update(Request $request, $id) {
$user = User::find($id);
$user->name = $request->name;
$user->save();
return response()->json(['status' => 'success']);
}
- 環境:PHP 8.2, Laravel 10
- 期待行為:更新用戶名稱並返回成功訊息
- 實際行為:偶爾返回空 JSON,更新失敗
請檢查程式碼,找出邏輯錯誤,提供修正建議,並解釋可能原因。
---
### 3. 效能瓶頸排查
**用途**:診斷 Laravel 應用中的效能問題,如 N+1 查詢或慢查詢。
**提示詞**:
我有一段 Laravel 程式碼,執行效能不佳:
[貼上程式碼]
- 環境:PHP 8.2, Laravel 10, MySQL 8, Redis 6
- 問題描述:[描述效能問題,如查詢慢、頁面載入延遲]
- 當前觀察:[描述已知的症狀,如慢查詢日誌或高 CPU 使用率]
請檢查是否有 N+1 問題或其他效能瓶頸,建議優化方式(如 Eager Loading、快取),並解釋底層原理(如資料庫索引或 Laravel Queue)。
**使用建議**:
- 提供慢查詢日誌或 Telescope 數據(若有)。
- 說明系統負載場景(如高併發或大量資料)。
- 要求具體優化方法(如索引、快取)與原理解釋。
**範例**:
我有一段 Laravel 程式碼,執行效能不佳:
$posts = Post::all();
foreach ($posts as $post) {
echo $post->user->name;
}
- 環境:PHP 8.2, Laravel 10, MySQL 8
- 問題描述:查詢 1000 筆貼文時,頁面載入時間超過 5 秒
- 當前觀察:Telescope 顯示多次查詢 users 表
請檢查是否有 N+1 問題,建議優化方式,並解釋 Eloquent 的關係載入機制。
---
## ⚙️ 功能開發範本
### 4. 建立 RESTful API
**用途**:快速開發符合 RESTful 原則的 Laravel API,包含驗證與回應格式。
**提示詞**:
請幫我在 Laravel 10 專案中建立一個 [功能名稱] API。
- 環境:PHP 8.2, Laravel 10, MySQL 8
- 需求:
- 輸入:[列出輸入欄位,如 name, email]
- 驗證規則:[列出驗證要求,如 email 唯一]
- 回應格式:
- 成功:[JSON 範例]
- 失敗:[JSON 範例]
- 請提供 Controller、FormRequest、Route 程式碼,並解釋實現邏輯。
**使用建議**:
- 明確定義 API 輸入與輸出格式。
- 說明驗證規則與錯誤處理需求。
- 若需要 CORS,特別註明跨域要求。
**範例**:
請幫我在 Laravel 10 專案中建立一個會員註冊 API。
- 環境:PHP 8.2, Laravel 10, MySQL 8
- 需求:
- 輸入:name, email, password
- 驗證規則:email 唯一,password 至少 8 碼
- 回應格式:
- 成功:{ "status": "success", "user_id": 1 }
- 失敗:{ "status": "error", "message": "Email already exists" }
- 請提供 Controller、FormRequest、Route 程式碼,並解釋實現邏輯。
---
### 5. 新功能模組
**用途**:開發完整的 Laravel 功能模組,包含資料庫設計與 API 實現。
**提示詞**:
我要在 Laravel 10 專案中新增 [功能名稱] 模組。
- 環境:PHP 8.2, Laravel 10, MySQL 8
- 需求:
- 功能描述:[描述功能,如文章留言]
- 資料結構:[列出資料表欄位,如 user_id, content]
- API 需求:[列出 API 端點,如新增、列表]
- 請提供 Migration、Model 關聯、Controller 程式碼,並說明設計邏輯。
**使用建議**:
- 詳細描述資料表結構與關聯(一對多、多對多)。
- 說明 API 的輸入輸出與權限要求。
- 若涉及前端,註明是否需要 Vue 整合。
**範例**:
我要在 Laravel 10 專案中新增文章留言功能。
- 環境:PHP 8.2, Laravel 10, MySQL 8
- 需求:
- 功能描述:每篇文章可有多個留言
- 資料結構:留言表(user_id, post_id, content, created_at)
- API 需求:POST /comments 新增留言,GET /posts/{id}/comments 取得留言列表
- 請提供 Migration、Model 關聯、Controller 程式碼,並說明設計邏輯。
---
### 6. 權限控管
**用途**:實現 Laravel 的權限管理,確保安全與靈活性。
**提示詞**:
我需要在 Laravel 10 專案中實現 [功能名稱] 的權限控管。
- 環境:PHP 8.2, Laravel 10
- 需求:
- 權限規則:[描述規則,如僅 admin 可刪除]
- 使用場景:[描述場景,如文章管理]
- 請提供 Policy、Middleware 或 Gate 的程式碼,並解釋實現邏輯與底層原理(如 Laravel 的授權機制)。
**使用建議**:
- 明確定義角色與權限規則。
- 說明是否需要整合第三方套件(如 Spatie Permission)。
- 要求底層原理(如 Gate vs. Policy)。
**範例**:
我需要在 Laravel 10 專案中實現文章管理權限。
- 環境:PHP 8.2, Laravel 10
- 需求:
- 權限規則:僅 admin 可刪除文章,一般使用者可編輯自己的文章
- 使用場景:文章 CRUD 操作
- 請提供 Policy 程式碼,整合到 Controller,並解釋 Laravel 的授權機制。
---
## 🚀 進階應用範本
### 7. 單元測試
**用途**:為 Laravel 功能撰寫單元與整合測試,確保程式碼穩定性。
**提示詞**:
請為以下 Laravel 程式碼撰寫 PHPUnit 測試:
[貼上程式碼]
- 環境:PHP 8.2, Laravel 10
- 測試需求:
- 成功案例:[描述成功場景]
- 失敗案例:[描述失敗場景,如驗證錯誤]
- 權限案例:[描述權限相關場景]
- 請提供測試程式碼,並說明測試邏輯與 Laravel 的測試框架原理。
**使用建議**:
- 提供完整的程式碼上下文(Controller 或 Service)。
- 明確測試場景(成功、失敗、邊界)。
- 若使用 Pest,特別註明。
**範例**:
請為以下 Laravel Controller 方法撰寫 PHPUnit 測試:
public function store(Request $request) {
$data = $request->validate(['name' => 'required', 'email' => 'required|email|unique:users']);
$user = User::create($data);
return response()->json(['status' => 'success', 'user_id' => $user->id]);
}
- 環境:PHP 8.2, Laravel 10
- 測試需求:
- 成功案例:成功創建用戶
- 失敗案例:email 重複
- 權限案例:未授權用戶無法訪問
- 請提供測試程式碼,並說明 Laravel 的測試框架原理。
---
### 8. CI/CD 整合
**用途**:建置 Laravel 專案的自動化測試與部署流程。
**提示詞**:
我想在 GitHub Actions 中為 Laravel 10 專案建置 CI/CD 流程。
- 環境:PHP 8.2, Laravel 10, MySQL 8
- 需求:
- 執行 composer install
- 設定環境與資料庫遷移(php artisan migrate)
- 執行 PHPUnit 測試
- 部署到 [目標環境,如 AWS EC2]
- 請提供 .yml workflow 範例,並解釋 CI/CD 流程與環境配置原理。
**使用建議**:
- 說明部署目標(例如 Laravel Vapor、AWS)。
- 若使用 Docker,註明容器化需求。
- 要求環境變數與安全性考量。
**範例**:
我想在 GitHub Actions 中為 Laravel 10 專案建置 CI/CD 流程。
- 環境:PHP 8.2, Laravel 10, MySQL 8
- 需求:
- 執行 composer install
- 執行 php artisan migrate
- 執行 PHPUnit 測試
- 部署到 AWS EC2
- 請提供 .yml workflow 範例,並解釋 CI/CD 流程與環境配置原理。
---
### 9. 重構建議
**用途**:檢查 Laravel 程式碼是否符合最佳實務並提供重構建議。
**提示詞**:
以下是我的 Laravel 程式碼:
[貼上程式碼]
- 環境:PHP 8.2, Laravel 10
- 需求:
- 檢查是否違反 SOLID 原則
- 提供重構建議,提升可維護性與效能
- 解釋重構的底層原理(如依賴注入或模組化)
- 請提供重構後的程式碼範例與說明。
**使用建議**:
- 提供完整的程式碼上下文(例如控制器或服務層)。
- 說明程式碼的當前問題(若已知)。
- 要求具體重構方法(如抽取 Service 層)。
**範例**:
以下是我的 Laravel 程式碼:
public function store(Request $request) {
$user = new User;
$user->name = $request->name;
$user->email = $request->email;
$user->password = bcrypt($request->password);
$user->save();
Mail::to($user->email)->send(new WelcomeMail($user));
return response()->json(['status' => 'success']);
}
- 環境:PHP 8.2, Laravel 10
- 需求:
- 檢查是否違反 SOLID 原則
- 提供重構建議,提升可維護性
- 解釋依賴注入與職責分離的原理
- 請提供重構後的程式碼範例與說明。
---
### 10. 學習與解釋
**用途**:深入理解 Laravel 的核心概念與底層原理,適用於學習或培訓。
**提示詞**:
請解釋 Laravel 的 [指定功能/機制] 運作方式。
- 環境:PHP 8.2, Laravel 10
- 需求:
- 提供簡單的程式碼範例
- 解釋底層原理(如 Service Container、Eloquent)
- 比較相關方法或選項(如 register() vs. boot())
- 請提供詳細說明與程式碼。
**使用建議**:
- 明確指定學習目標(如 Service Container、Middleware)。
- 要求簡單範例與原理解釋。
- 若涉及比較,列出比較對象。
**範例**:
請解釋 Laravel Service Container 的運作方式。
- 環境:PHP 8.2, Laravel 10
- 需求:
- 提供綁定與解析的程式碼範例
- 解釋底層原理(如依賴注入、反射)
- 比較 register() 與 boot() 的差異
- 請提供詳細說明與程式碼。
---
## 🎯 使用技巧
- **Debug 時**:
- 提供完整錯誤訊息(包含堆疊追蹤)與環境資訊(PHP、Laravel 版本)。
- 附上相關程式碼片段,明確期待與實際行為。
- 要求底層原理(如 Eloquent 的 N+1 問題、CORS 機制)以加深理解。
- **開發時**:
- 明確定義需求規格(輸入、輸出、驗證規則)。
- 說明技術限制(如是否支援 CORS、是否需要 Vue 整合)。
- 要求程式碼結構(例如 Controller、Model 分離)。
- **學習時**:
- 要求 AI 提供簡單範例與底層原理。
- 要求比較相關概念(如 Gate vs. Policy、bind() vs. singleton())。
- 要求實務應用場景(如 Service Container 在 API 開發中的使用)。
- **通用建議**:
- 使用具體、結構化的提示詞,避免模糊描述。
- 若結果不理想,迭代提示詞,補充更多上下文或限制條件。
- 保存常用範本,根據專案需求客製化。
---
## 🛠 進階建議
- **建立個人範本庫**:將常用提示詞儲存為範本,根據專案需求快速調整。
- **結合工具**:搭配 Laravel Telescope、Sentry 或 Blackfire,提供更精準的 Debug 資料。
- **學習路徑**:使用學習範本深入理解 Laravel 核心(如 Service Container、Eloquent),並應用於實務專案。
- **團隊協作**:將範本分享給團隊,標準化 AI 輔助開發流程,提升效率。
沒有留言:
張貼留言