Sử dụng Agentic IDE với dự án Laravel
Agentic IDE là một công cụ mạnh mẽ giúp tăng tốc độ và hiệu quả phát triển trong các dự án Laravel. Dưới đây là các ví dụ thực tế về cách áp dụng Agentic IDE cho các tác vụ phổ biến.
1. Viết Document cho API
Khi bạn cần tạo tài liệu cho một API endpoint trong Laravel, bạn có thể yêu cầu Agentic IDE tự động tạo comment theo chuẩn PHPDoc.
"prompt: Tạo PHPDoc cho API"
Tạo PHPDoc cho action store trong PostController. Document cần mô tả mục đích của action, các tham số trong StorePostRequest, và các response trả về, bao gồm cả trường hợp validation error.
Ví dụ Agentic IDE thực hiện:
Agentic IDE sẽ phân tích code của action store và StorePostRequest, sau đó thêm một khối PHPDoc chi tiết như sau:
class PostController extends Controller
{
/**
* Store a newly created resource in storage.
*
* @param \App\Http\Requests\StorePostRequest $request
* @return \Illuminate\Http\JsonResponse
*
* @response 201 {
* "id": 1,
* "title": "New Post",
* "body": "Content of the post.",
* "created_at": "2025-06-26T00:00:00.000000Z",
* "updated_at": "2025-06-26T00:00:00.000000Z"
* }
* @response 422 {
* "message": "The given data was invalid.",
* "errors": {
* "title": ["The title field is required."]
* }
* }
*/
public function store(StorePostRequest $request)
{
$post = Post::create($request->validated());
return response()->json($post, 201);
}
}2. Điều tra kiến trúc hệ thống
Khi tiếp nhận một dự án Laravel lạ, việc hiểu rõ cấu trúc và các thành phần chính là rất quan trọng.
"prompt: Điều tra kiến trúc hệ thống"
Phân tích dự án Laravel hiện tại. Liệt kê các Service Provider, Middleware, và các custom command chính. Vẽ một biểu đồ Mermaid dạng graph để thể hiện mối quan hệ giữa các Model chính (User, Post, Comment).
Ví dụ Agentic IDE thực hiện:
Agentic IDE sẽ quét toàn bộ codebase và cung cấp một báo cáo chi tiết, kèm theo biểu đồ Mermaid:
Service Providers chính:
App\Providers\AuthServiceProviderApp\Providers\EventServiceProviderApp\Providers\RouteServiceProviderApp\Providers\CustomServiceProvider
Middleware toàn cục:
\App\Http\Middleware\EncryptCookies::class\Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse::class
Custom Commands:
app:import-dataapp:send-daily-report
Biểu đồ quan hệ Models:
3. Điều tra flow tính năng
Hiểu rõ một luồng nghiệp vụ phức tạp là chìa khóa để bảo trì và mở rộng.
"prompt: Điều tra luồng tính năng"
Phân tích luồng "thanh toán đơn hàng" trong dự án này. Bắt đầu từ khi người dùng nhấn nút "Thanh toán" ở OrderController@processPayment. Liệt kê các class, method, và event được gọi tuần tự. Vẽ biểu đồ sequence để minh họa.
Ví dụ Agentic IDE thực hiện:
4. Debug lỗi
Khi gặp một bug khó, Agentic IDE có thể giúp bạn tìm ra nguyên nhân và đề xuất cách sửa.
"prompt: Debug lỗi non-object"
Lỗi "Trying to get property 'name' of non-object" xảy ra ở file resources/views/posts/show.blade.php dòng 25. Tìm nguyên nhân gốc rễ của lỗi này. Có vẻ như biến $post->author đôi khi bị null. Đề xuất cách sửa an toàn.
Ví dụ Agentic IDE thực hiện:
Agentic IDE sẽ kiểm tra PostController@show và phát hiện ra rằng quan hệ author không được load sẵn (eager-loaded).
Phân tích: Lỗi xảy ra vì bạn đang cố truy cập thuộc tính name của một author không tồn tại. Điều này có thể xảy ra khi một bài viết không có tác giả, hoặc quan hệ author không được load đúng cách.
Cách sửa đề xuất:
Eager Loading trong Controller:
php// In PostController.php public function show($id) { $post = Post::with('author')->findOrFail($id); return view('posts.show', compact('post')); }Kiểm tra an toàn trong View (Optional Chaining): Sử dụng optional chaining của PHP 8+ hoặc toán tử null coalescing.
blade{{-- In show.blade.php --}} <p>Author: {{ $post->author?->name ?? 'Anonymous' }}</p> {{-- [!code focus] --}}
5. Phát triển tính năng mới
Yêu cầu Agentic IDE viết code cho một tính năng mới dựa trên mô tả.
"prompt: Phát triển tính năng export CSV"
Tạo một tính năng "export posts to CSV".
- Tạo một route
GET /posts/export. - Tạo một method
exporttrongPostController. - Method này sẽ lấy tất cả bài viết và xuất ra file CSV với các cột:
id,title,author_name. - Stream response để không gây quá tải bộ nhớ.
Ví dụ Agentic IDE thực hiện:
Agentic IDE sẽ tạo và sửa các file cần thiết:
1. Thêm route (routes/web.php):
Route::get('/posts/export', [PostController::class, 'export'])->name('posts.export');2. Thêm method vào PostController.php:
use Symfony\Component\HttpFoundation\StreamedResponse;
// ... inside PostController class
public function export()
{
$response = new StreamedResponse(function () {
$handle = fopen('php://output', 'w');
// Add CSV headers
fputcsv($handle, ['ID', 'Title', 'Author']);
Post::with('author')->chunk(200, function ($posts) use ($handle) {
foreach ($posts as $post) {
fputcsv($handle, [
$post->id,
$post->title,
$post->author?->name ?? 'N/A',
]);
}
});
fclose($handle);
}, 200, [
'Content-Type' => 'text/csv',
'Content-Disposition' => 'attachment; filename="posts.csv"',
]);
return $response;
}