Các nguyên tắc tốt nhất, mẹo và thủ thuật sử dụng Laravel

Cập nhật vào

Mục luc:

Các nguyên tắc tốt nhất, mẹo và thủ thuật sử dụng Laravel

Giới thiệu về các nguyên tắc tốt nhất trong Laravel

Đối với hầu hết các dự án Laravel, các nguyên tắc tốt nhất có thể được tóm tắt thành hai điểm:

  • Giữ nguyên các giá trị mặc định;
  • Chuyển giao càng nhiều công việc như có thể cho framework. Cho dù bạn đang chạy Laravel phiên bản 10, 9 hay 8, hãy xem chi tiết làm thế nào tôi có thể giúp bạn cải thiện bất kỳ mã nguồn nào với hàng loạt mẹo và thủ thuật.

Bên cạnh đó, mình đã có các bài viết về các nguyên tắc tốt nhất về kiến trúc, RESTful APIs, bảo mật và kiểm thử chứa thêm nhiều nguyên tắc tốt nhất, mẹo và thủ thuật mà bạn muốn kiểm tra.

Các nguyên tắc tốt nhất, mẹo và thủ thuật trong Laravel

Luôn cập nhật Laravel

Việc duy trì Laravel luôn được cập nhật mang lại những lợi ích sau đây:

  • Tăng cường bảo mật: Bởi vì Laravel thường xuyên phát hành các bản vá lỗi bảo mật.
  • Hiệu suất tốt hơn: Các bản cập nhật Laravel thường bao gồm cải tiến hiệu suất, chẳng hạn như thời gian tải nhanh hơn và mã nguồn hiệu quả hơn.
  • Tính năng và chức năng mới: Đây là lý do chúng ta sử dụng và yêu thích Laravel, và cũng là nguyên nhân đã thay đổi cuộc sống của chúng ta.
  • Tương thích với các gói mới nhất từ cộng đồngchính thức. Nếu việc cập nhật Laravel khiến bạn sợ hãi, điều đó có nghĩa là mã nguồn của bạn chưa được kiểm thử. Bạn lo sợ rằng một bản cập nhật lớn sẽ làm hỏng mã nguồn của bạn một cách khó khăn để giải quyết. Trong trường hợp đó, việc kiểm thử là một nguyên tắc tốt nhất mà bạn nên thực hiện. Chi tiết hơn về điều đó sẽ được đề cập dưới đây.

Luôn cập nhật các gói

Truy cập vào hàng chục gói từ hệ sinh thái chính thức Laravel cũng như hàng ngàn gói từ cộng đồng là điều làm cho công việc của chúng ta dễ dàng hơn.

Tuy nhiên, bạn sử dụng càng nhiều gói, bạn càng có nhiều điểm có thể gặp lỗi.

Thường xuyên chạy composer update là một trong những nguyên tắc tốt nhất dễ dàng để áp dụng và đóng vai trò quan trọng trong việc tạo ra một mã nguồn an toàn hơn.

Tuy nhiên, tất nhiên, điều này cũng tương tự như trong phần trước: nếu mã của bạn chưa được kiểm thử tốt, có thể xảy ra các lỗi không mong muốn. Nhưng đừng lo lắng, các câu hỏi tiếp theo sẽ giúp bạn bắt đầu nâng cao trình độ về mặt này! 💪

Hãy giữ cho dự án của bạn được kiểm thử để ngăn chặn những lỗi nghiêm trọng.

Viết các bài kiểm tra tự động là một chủ đề rộng lớn và ít được biết đến trong số các nhà phát triển.

Nhưng bạn có biết rằng đây cũng là một trong số ít nguyên tắc tốt nhất để đảm bảo tính đáng tin cậy?

Dưới đây là những lợi ích của một bộ kiểm tra tốt:

  • Ít lỗi hơn.
  • Khách hàng hài lòng hơn.
  • Nhà tuyển dụng hài lòng hơn.
  • Nhà phát triển tự tin. Bạn sẽ không sợ làm hỏng cái gì đó khi quay lại dự án sau một thời gian.
  • Người mới nhận công việc có thể làm việc hiệu quả ngay từ ngày đầu tiên, đặc biệt nếu bạn tuân theo các hướng dẫn của Laravel. Thay đổi một số mã? Không vấn đề gì. Chỉ cần chạy php artisan test để xem bạn làm hỏng gì, sửa lại và lặp lại!

Có khả năng làm cho dự án vững chắc hơn rất nhiều nhờ kiểm thử tự động sẽ giúp cho sự nghiệp của bạn thăng tiến.

Laracasts cung cấp các khóa học kiểm thử miễn phí để giúp bạn bắt đầu. Một khóa với PHPUnit, và một khóa với Pest, framework kiểm thử tốt nhất bạn nên thử, giúp hiện đại hóa và đơn giản hóa kiểm thử trong PHP.

Hãy tuân thủ cấu trúc thư mục mặc định

Bạn có biết tại sao bạn đang sử dụng một framework không?

  1. định hình công việc của bạn bằng một tập hướng dẫn mà bạn có thể tuân theo để đảm bảo mọi thành viên trong nhóm của bạn đồng ý;
  2. Nó cung cấp nhiều tính năng hoàn thiện và đã được kiểm tra kỹ càng một cách miễn phí, để bạn có thể tập trung vào việc viết mã nguồn cụ thể cho dự án của bạn.

Vậy, việc tuân thủ cấu trúc dự án mặc định của Laravel có được coi là một nguyên tắc tốt nhất không?

  1. Tiện lợi. Cách mặc định của Laravel được tài liệu hóa. Khi bạn quay lại dự án sau vài tuần hoặc vài tháng, bạn sẽ cảm ơn bản thân đã tuân thủ nguyên tắc này.
  2. Làm việc với đồng đội dễ dàng hơn đáng kể. Họ biết Laravel, giống như bạn. Sử dụng kiến thức chung này để giúp dự án tiến lên thay vì phải phát minh lại mọi thứ. Khi nào bạn không nên tuân thủ theo mặc định?

Khi kích thước dự án của bạn thực sự yêu cầu thực hiện các công việc khác nhau.

Đọc thêm về các nguyên tắc tốt nhất về kiến trúc.

Sử dụng form requests tùy chỉnh cho việc xác thực phức tạp

Lý do chính để sử dụng form requests tùy chỉnh là:

  1. Tái sử dụng xác thực trên nhiều controller;
  2. Giảm tải mã từ các controller quá phức tạp;

Tạo form requests tùy chỉnh cũng đơn giản như chạy lệnh Artisan này:

1php artisan make:request StorePostRequest

Sau đó, chỉ cần type-hint nó trong controller của bạn:

1use App\Http\Requests\StorePostRequest;
2 
3class PostController
4{
5 function store(StorePostRequest $request)
6 {
7 $validated = $request->validated();
8 
9 Post::create($validated);
10 
11 //
12 }
13}

Form requests cũng có thể được sử dụng cho phần xác thực, nếu bạn cảm thấy Policies quá phức tạp.

Sử dụng các controller chỉ có một hành động để giữ mã nguồn được tổ chức

Đôi khi, mặc dù tuân theo tất cả các nguyên tắc tốt nhất, controller của bạn trở nên quá lớn.

Vì vậy, đây là một mẹo tuyệt vời: Laravel cung cấp một cách để tạo ra các Single Action Controllers.

Thay vì chứa nhiều hành động (index, create, store, show, v.v.), như Resource Controllers, Single Action Controllers chỉ chứa một hành động duy nhất.

Để tạo một Single Action Controller, sử dụng lệnh php artisan make:controller ShowPostController --invokable.

Điều này sẽ tạo ra một controller chỉ với một hành động được gọi là __invoke (tìm hiểu thêm về phương thức ma thuật __invoke).

Sau đó, trong các route của bạn, bạn có thể làm như sau:

1use App\Http\Controllers\PostController;
2use App\Http\Controllers\ShowPostController;
3 
4Route::get('/posts/{post}', [PostController::class, 'show']);
5Route::get('/posts/{post}', ShowPostController::class);

Đây là một nguyên tắc tốt tương đối và tùy thuộc vào bạn để quyết định liệu bạn muốn sử dụng single action controllers hay không.

Sử dụng middlewares thay vì lặp lại mã

Middlewares trong Laravel cho phép bạn lọc hoặc sửa đổi yêu cầu của người dùng hiện tại. Dưới đây là một số trường hợp sử dụng:

  • Kiểm tra quyền truy cập cần thiết;
  • Kiểm tra ngôn ngữ của người dùng và thay đổi locale tương ứng.

Và như bạn mong đợi, Laravel đi kèm với một loạt middlewares sẵn có để xác thực, giới hạn truy cập và nhiều tính năng khác.

Sau khi middleware của bạn đã thực hiện công việc như mong đợi, bạn có thể chặn yêu cầu hoặc cho nó tiếp tục.

1public function handle(Request $request, Closure $next) : Response
2{
3 if (! $request->user()->hasEnoughTokens()) {
4 abort(403);
5 }
6 
7 return $next($request);
8}

Một middleware có thể được gắn kết với bất kỳ số lượng route nào, giúp bạn ngăn chặn sự trùng lặp mã.

Tìm hiểu thêm về middlewares của Laravel.

Sử dụng policies cho việc xác thực

Sử dụng policies cho việc xác thực trong Laravel là rất quan trọng để duy trì một ứng dụng có tổ chức và dễ bảo trì. Dưới đây là ba lý do chính để sử dụng policies:

  1. Tái sử dụng logic xác thực trên nhiều controller: Bằng cách tập trung quy tắc xác thực, bạn có thể đảm bảo tính nhất quán và tránh việc lặp lại mã trong các phần khác nhau của ứng dụng của bạn.
  2. Giảm tải mã từ các controller quá phức tạp: Di chuyển logic xác thực vào policies giúp giữ cho các controller của bạn nhẹ nhàng, tập trung vào trách nhiệm chính của chúng và dễ đọc và bảo trì hơn.
  3. Dễ dàng tìm mã liên quan đến xác thực: Lưu trữ policies trong thư mục app/Policies giúp cho việc tìm và cập nhật quy tắc xác thực dễ dàng cho các nhà phát triển khi cần thiết.

Hãy xem một ví dụ thực tế về việc sử dụng policy:

1// app/Policies/PostPolicy.php
2public function update(User $user, Post $post)
3{
4 return $user->id === $post->user_id;
5}
6 
7// app/Http/Controllers/PostController.php
8public function update(Request $request, Post $post)
9{
10 $this->authorize('update', $post);
11 
12 // ...
13}

Recommended