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.
3 comments
Hay quá a ơi
Bạn cũng ở đây à
Bài viết chất lượng