Những cập nhật trong Laravel 10

Sau hơn một thập kỷ kể từ khi giới thiệu vào tháng Sáu năm 2011, Framework Laravel đã trở nên cực kỳ phổ biến. Các phiên bản của Laravel được release hằng năm với những nâng cấp đáng kể.

Mới đây, vào ngày 14 tháng 2 năm 2023, phiên bản Laravel 10 chính thức được phát hành. Chúng ta hãy cùng nhau tìm hiểu xem phiên bản này có những thay đổi và cập nhật gì so với những phiên bản trước nhé.

Native Type Declarations

Trước version 10: sử dụng DocBlocks để làm rõ chức năng của một function và loại parameters hoặc response mong đợi.

    /**
    * Determine whether the user can create models.
    *
    * @param User $user
    * @return IlluminateAuthAccessResponse|bool
    */
    public function create(User $user)
    {
      //
    }

Version 10:

    /**
     * Store a newly created resource in storage.
     */
    public function store(Request $request): View
    {
        return view('');
    }

Để đảm bảo được sự tương thích ngược của framework (breaking changes), các thuộc tính sẽ được áp dụng cho:

  • Dữ liệu trả về (return types)
  • Tham số của phương thức (method arguments)
  • Loại bỏ một số khai báo types không còn cần thiết ở docblock
  • Cho phép có thể khai báo ngay trong các tham số của closure

Hỗ trợ sửa cột cho CSDL

Nhằm loại bỏ dần nhu cầu sử dụng package doctrine/dbal, một tính năng mới đã được giới thiệu trong Laravel 10 cho phép các nhà phát triển sử dụng phương thức change() để sửa đổi các cột mà không cần các gói bổ sung.

Sử dụng phương thức change() để chỉnh sửa cột.

Ví dụ: Để sửa kiểu dữ liệu từ integer -> bigInt ta làm như sau

# before
$table->integer('user_balance')->unsigned()->default(0)->comment('balance');

# after
$table->bigInteger('user_balance')->unsigned()->default(0)->comment('balance')->change();

Note:

  • Cần thêm tất cả thuộc tính của cột khi thay đổi nếu không chúng sẽ bị loại bỏ.
  • Nếu đã cài đặt doctrine/dbal, nên khai báo phương thức Schema::useNativeSchemaOperationsIfPossible() trong App/Providers/AppServiceProvider để sử dụng tính năng này. Laravel sẽ ưu tiên nó trước khi sử dụng đến package và không hỗ trợ cho SQLite.
use IlluminateSupportFacadesSchema;
class AppServiceProvider extends ServiceProvider
{
  public function boot()
  {
    Schema::useNativeSchemaOperationsIfPossible();
  }
}

Process Interaction

Process Interaction giúp việc thử nghiệm và chạy các quy trình CLI trở nên dễ dàng.

use IlluminateSupportFacadesProcess;
$result = Process::run('ls -la');
$result->successful();
$result->failed();
$result->exitCode();
$result->output();
$result->errorOutput();
$result->throw();
$result->throwIf(condition);

Process Interaction giúp chúng ta:

  • Xử lý đầu ra của process khi nhận được
  • Thiết lập Process không đồng bộ
  • Tạo ra nhóm các process
  • Các tính năng testing phong phú thông qua fake()
  • Ngăn chặn ngoại lệ trong quá trình testing

Process là một tính năng mới rất được đầu tư với nhiều phương thức và option được cung cấp. Bạn có thể tìm hiểu chi tiết ở docs về phần này của Laravel

Cung cấp 1 package mới – Laravel Pennant

Laravel Pennant cung cấp một cách tiếp cận gọn nhẹ, được sắp xếp hợp lý để quản lý các cờ tính năng của ứng dụng của bạn.

Nó cho phép chúng ra tự tin triển khai dần dần các tính năng ứng dụng mới, thử nghiệm các thiết kế giao diện mới.

Bạn có thể tìm hiểu chi tiết nó trong docs của Laravel 10.

0 Shares:
3 comments
Leave a Reply

Your email address will not be published. Required fields are marked *

You May Also Like
Read More

SOLID Principles

Table of Contents Hide Single-responsibility PrincipleOpen/Closed Principle (OCP)Liskov Substitution Principle (LSP)Interface Segregation Principle (ISP)Dependency Inversion Principle (DIP)Advantages of…
Read More

20 Laravel Eloquent Tips and Tricks (P1)

Eloquent ORM được sủ dụng rất nhiều trong 1 project Laravel, tuy nhiên để sử dụng được tối đa những gì Laravel cung cấp thì không phải ai cũng biết. Trong bài viết này mình sẽ chỉ cho các bạn một vài thủ thuật, hi vọng sẽ giúp ích cho các bạn trong một vài trường hợp cụ thể.