Skip to main content

Những thay đổi trong Laravel 9

· 3 min read

Laravel 9 sẽ là phiên bản LTS tiếp theo của Laravel và nó sẽ ra mắt vào đầu năm 2022. Trong bài viết này, chúng ta sẽ xem qua 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 9 đã lên kế hoạch phát hành vào khoảng tháng 9 năm 2021, nhưng Team Laravel đã quyết định đẩy lùi ngày phát hành trở lại vào tháng 1 năm 2022.

note

Laravel sử dụng các gói phát triển dựa trên cộng đồng như Symfony 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ì đó, Laravel trì hoãn bản phát hành Laravel 9 cho đến tháng 1 năm 2022.

Do đó, các bản phát hành tiếp theo của Laravel trong tương lai cũng sẽ bị đẩy lùi và đây là lịch ra mắt 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

Yêu cầu PHP tối thiểu#

Vì Laravel 9 sẽ yêu cầu Symfony 6.0 cho nên nó yêu cầu tối thiểu là PHP 8, cho nên Laravel 9 cũng sẽ có cùng yêu cầu này.

Stub Migrations vô danh#

Đầu năm nay, Laravel 8.37 ra mắt tính năng mới gọi là Migration vô danh giúp ngăn chặn xung đột tên class 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 ra mắt, điều này sẽ được áp dụng mặc định khi bạn chạy php artisan make:migration.

Giao diện Query Builder mới#

Cảm ơn Chris Morrell, Laravel 9 sẽ có Giao diện Query Builder mới và bạn có thể vào merged PR để xem chi tiết.

NOTE Đối vứi những lập trình viên dựa trên gợi ý để phân tích static, refactoring hoặc viết hoàn thành mã trong IDE, việc thiếu giao diện chia sẻ hoặc thừa kế giữa Query\Builder, Eloquent\BuilderEloquent\Relation có thể khá khó khăn:

return Model::query()    ->whereNotExists(function($query) {        // $query là mộtQuery\Builder    })    ->whereHas('relation', function($query) {        // $query là một Eloquent\Builder    })    ->with('relation', function($query) {        // $query là một Eloquent\Relation    });

Tính năng này bổ sung giao diện mới Illuminate\Contracts\Database\QueryBuilder và trait Illuminate\Database\Eloquent\Concerns\DecoratesQueryBuilder sẽ triển khai giao diện thay cho __call.

Các hàm String trong PHP 8#

Vì PHP 8 sẽ là yêu cầu tối thiểu của Laravel, Tom Schlick đã gửi PR để chuyển sang sử dụng các hàm nội bộ str_contains(), str_starts_with()str_ends_with() trong class \Illuminate\Support\Str.

Sử dụng Symfony Mailer thay vì SwitftMailer#

Symfony 6.0 sẽ không dùng SwiftMail nữa cho nên Laravel 9 cũng sẽ thay dổi để sử dụng Symfony Mailer cho tất cả việc gửi mail. Điều này cũng mở ra một số đột phá mới, bạn có thể xem PR để biết thêm chi tiết. Bài hướng dẫn nâng cấp lên Laravel 9 sẽ có khi nó được phát hành chính thức.

Còn nữa#

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