Có gì mới ở Laravel 8

Bài viết đầu tiên này chúng ta sẽ tìm hiểu về những tính năng mới chính có trong laravel 8. Chúng ta sẽ khái quát 1 loạt các tính năng sau đó sẽ đi vào chi tiết từng bài học các bạn nhé!

1. Trang welcome mới

Trang welcome default mới của Laravel 8 sử dụng TailwindCSS thay vì sử dụng bootstrap như trước. Đây là một css framework cũng khá mới và nổi ở thời điểm hiện tại.

2. Thư mục Models.

Laravel 8 mặc định đã có riêng thư mục Models (app/Models) bên trong thư mục app thay vì chỉ nằm trơ trọi trong thư mục như các phiên bản cũ nữa

3. Model Factory Class.

Laravel đã cải tiến factory thành các class cho code readable hơn thay vì nun class như trước đây. Đồng thời relation support. cũng được Laravel tối ưu hơn

Ví Dụ:  Khai báo UserFactory.

<?php
namespace Database\Factories;
use App\Models\User;
use Illuminate\Database\Eloquent\Factories\Factory;
use Illuminate\Support\Str;

class UserFactory extends Factory
{
    /**
     * The name of the factory's corresponding model.
     *
     * @var string
     */
    protected $model = User::class;
    /**
     * Define the model's default state.
     *
     * @return array
     */
    public function definition()
    {
        return [
            'name' => $this->faker->name,
            'email' => $this->faker->unique()->safeEmail,
            'email_verified_at' => now(),
            'password' => '$2y$10$92IXUNpkjO0rOQ5byMi.Ye4oKoEa3Ro9llC/.og/at2.uheWG/igi', // password
            'remember_token' => Str::random(10),
        ];
    }

    /**
     * Indicate that the user is suspended.
     *
     * @return \Illuminate\Database\Eloquent\Factories\Factory
     */
    public function suspended()
    {
        return $this->state([
            'account_status' => 'suspended',
        ]);
    }
}

4. Migration Squashing.

Laravel 8 có chức năng cho phép chuyển đổi tất cả file migation vào một file SQL và file này sẽ nằm trong thư mục database/schema để quản lý các migration dễ dàng hơn. Tuy nhiên chức năng nằng chỉ hỗ trợMySQL và PostgreSQL 

5. Job Batching ( Nhóm các job)

Job Batching cho phép chúng ta gom nhóm một loạt các job vào một batch và thực thí chúng đồng thời tính năng này cũng tạo ra thêm một loại các event cho batch. Ví dụ như then, catch, finally ..

6. Tối ưu Rate limit.

Laravel 8 trở lên cũng đã cho phép chúng ta tạo ra các rate limit một các đơn giản qua RateLimiter 

(Illuminate\Support\Facades\RateLimiter).

Bên cạnh đó chúng ta cũng có thể cho logic vào trong limiter.

Ví Dụ: Khai báo một rate limit.

use Illuminate\Cache\RateLimiting\Limit;
use Illuminate\Support\Facades\RateLimiter;
RateLimiter::for('global', function (Request $request) {
    return Limit::perMinute(1000);
});

Khi muốn sử dụng rate limit cho route thì chúng ta chỉ cần khai báo middleware với name throttle:global

7. Cải tiến event listen.

Giờ đây bạn đã có thể lắng nghe event qua Event::listen() mà không cần khai báo file listener.

VD: Khai báo listen sự kiện PodcastProcessed.

use App\Events\PodcastProcessed;
use Illuminate\Support\Facades\Event;
Event::listen(function (PodcastProcessed $event) {
    //
});

Và nếu bạn muốn đưa một listen vào queue thì trong phiên bản laravel 8 này có phát triển thêm function queueable cho phép chúng ta đưa một callable vào queue.

VD: Đưa listen trên vào queue.

use App\Events\PodcastProcessed;
use function Illuminate\Events\queueable;
use Illuminate\Support\Facades\Event;
Event::listen(queueable(function (PodcastProcessed $event) {
    //
}));

8. Tối ưu artisan serve.

Laravel 8 đã code thêm chức năng detect thay đổi trong file .env nếu thay đổi nó sẽ tự động restart lại cho chúng ta.

9. Lời kết:

Larevel 8 trở đi đã có những bước tiến khác xa so với bản cũ, trong một bài viết khó có thể nói hết được những điểm này . Chúng ta sẽ tìm hiểu dần các bạn nhé!

Bình luận