Laravel 9 có gì mới

Laravel 9 có gì mới
Laravel v9 sẽ là phiên bản LTS tiếp theo của Laravel và nó sẽ ra mắt vào khoảng đầu năm 2022. Trong bài đăng này, chúng tôi muốn phác thảo tất cả các tính năng và thay đổi mới được công bố cho đến nay.

Thay đổi ngày phát hành Laravel 9

Laravel v9 đã được lên kế hoạch phát hành vào khoảng tháng 9 năm nay, nhưng Laravel Team đã quyết định đẩy bản phát hành này trở lại tháng 1 năm 2022

Laravel uses a variety of community-driven packages as well as nine Symfony components for a number of features within the framework. Symfony 6.0 is due for release in November. For that reason, we are choosing to delay the Laravel 9.0 release until January 2022.
By delaying the release, we can upgrade our underlying Symfony components to Symfony 6.0 without being forced to wait until September 2022 to perform this upgrade. In addition, this better positions us for future releases as our yearly releases will always take place two months after Symfony's releases.

Tạm dịch là

Laravel sử dụng nhiều gói dựa trên cộng đồng cũng như chín Symfony components cho một số tính năng trong framework. Symfony 6.0 sẽ được phát hành vào tháng 11. Vì lý do đó, chúng tôi đang chọn trì hoãn bản phát hành Laravel 9.0 cho đến tháng 1 năm 2022.
Bằng cách trì hoãn việc phát hành, chúng tôi có thể nâng cấp các thành phần Symfony cơ bản của mình lên Symfony 6.0 mà không bị buộc phải đợi đến tháng 9 năm 2022 để thực hiện nâng cấp này. Ngoài ra, điều này tốt hơn cho chúng tôi cho các bản phát hành trong tương lai vì các bản phát hành hàng năm của chúng tôi sẽ luôn diễn ra hai tháng sau khi Symfony phát hành.

Điều này cũng sẽ đẩy các bản phát hành lớn trong tương lai trở lại và đây là lịch trình trong tương lai:

  • Laravel 9: Tháng 1 năm 2022
  • Laravel 10: Tháng 1 năm 2023
  • Laravel 11: Tháng 1 năm 2024

Laravel 9 sử dụng phiên bản PHP thấp nhất là PHP 8

Vì Laravel 9 sẽ yêu cầu Symfony 6.0 và nó có yêu cầu tối thiểu là PHP 8, có nghĩa là Laravel 9 sẽ có cùng một hạn chế này.

Anonymous Stub Migrations

Đầu năm nay, Laravel 8.37 ra mắt với một tính năng mới được gọi là Anonymous Migrations giúp ngăn chặn xung đột tên của các lớp migration.

use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
 
return new class extends Migration {
 
    /**
     * Run the migrations.
     *
     * @return void
     */
    public function up()
    {
        Schema::table('people', function (Blueprint $table) {
            $table->string('first_name')->nullable();
        });
    }
};

Khi Laravel 9 release thì cái này sẽ là mặc định khi chạy lệnh php artisan make:migration

Query Build Interface mới

Cảm ơn Chris Morrell, Laravel 9 sẽ có query builder interface mới và bạn có thể xem pull request này để biết tất cả các chi tiết.

return Model::query()
	->whereNotExists(function($query) {
		// $query is a Query\Builder
	})
	->whereHas('relation', function($query) {
		// $query is an Eloquent\Builder
	})
	->with('relation', function($query) {
		// $query is an Eloquent\Relation
	});

Bạn có thể xem thêm chi tiết tại: Illuminate\Contracts\Database\QueryBuilder

Hàm xử lý chuổi mới của PHP 8

Vì PHP 8 sẽ là mức tối thiểu, Tom Schlick đã gửi PR để chuyển sang sử dụng các hàm str_contains(), str_starts_with()str_ends_with() trong lớp \Illuminate\Support\Str.

Đổi từ SwiftMailer sang Symfony Mailer

Symfony không dùng SwiftMailer và Laravel 9 thực hiện thay đổi để sử dụng Symfony Mailer cho tất cả việc vận chuyển thư. Điều này mở ra một số thay đổi đột phá và bạn có thể xem lại bài PR để biết tất cả các chi tiết. Hướng dẫn nâng cấp Laravel 9 sẽ bao gồm các hướng dẫn sau khi nó được phát hành chính thức.

Và nhiều thứ khác ...

Laravel 9 vẫn còn vài tháng nữa, và nhiều tính năng và thông báo mới sẽ ra mắt. Chúng tôi sẽ cập nhật bài đăng này khi chúng được công bố.