Bỏ qua đến nội dung chính

Laravel 10 có gì mới? Tóm tắt thay đổi và lịch hỗ trợ

Ghi chú lịch sử phiên bản Laravel 10 (02/2023): điểm mới chính, thay đổi khi nâng cấp từ Laravel 9 và lý do dự án mới nên dùng bản Laravel hiện hành.

Tan Hien
Founder
Cập nhật 6 phút đọc
Chia sẻ:
Laravel 10 có gì mới? Tóm tắt thay đổi và lịch hỗ trợ
Nội dung bài viết
  1. 1.Laravel 10 ra mắt khi nào và còn được hỗ trợ không?
  2. 2.Những điểm mới chính của Laravel 10
  3. 2.1PHP 8.1 và Composer 2.2 là yêu cầu tối thiểu
  4. 2.2Khai báo kiểu cho toàn bộ khung ứng dụng
  5. 2.3Laravel Pennant: quản lý feature flag
  6. 2.4Facade Process để chạy lệnh hệ thống
  7. 2.5Tìm test chậm và khởi tạo dự án với Pest
  8. 2.6Lệnh make hỏi tham số khi thiếu
  9. 2.7Tạo mật khẩu ngẫu nhiên với Str::password()
  10. 3.Thay đổi cần sửa khi nâng cấp từ Laravel 9 lên 10
  11. 4.Dự án đang chạy Laravel 10 nên làm gì?
  12. 4.1Kinh nghiệm từ Hozitech

Laravel 10 phát hành ngày 14/02/2023, yêu cầu tối thiểu PHP 8.1 và Composer 2.2. Điểm mới đáng chú ý gồm: khai báo kiểu (type) cho toàn bộ khung ứng dụng, gói Laravel Pennant quản lý feature flag, facade Process chạy lệnh hệ thống, tùy chọn --profile cho test và hàm Str::password(). Laravel 10 đã hết vá bảo mật từ 04/02/2025.

Bài này là ghi chú lịch sử phiên bản: tóm tắt đúng những gì Laravel 10 mang lại, các thay đổi cần sửa khi nâng cấp từ Laravel 9 và lời khuyên cho dự án đang chạy bản này. Nếu bạn bắt đầu dự án mới, hãy đọc tổng quan Laravel và các phiên bản hiện hành trước.

Infographic vòng đời Laravel 10: phát hành 14/02/2023, hết sửa lỗi 06/08/2024, hết vá bảo mật 04/02/2025
Các mốc hỗ trợ của Laravel 10 theo trang release notes chính thức.

Laravel 10 ra mắt khi nào và còn được hỗ trợ không?

Từ Laravel 8, mỗi năm Laravel ra một bản lớn (khoảng quý 1). Mỗi bản được sửa lỗi 18 tháng và vá bảo mật 2 năm. Bảng dưới lấy từ trang Release Notes chính thức (truy cập 01/10/2026):

Phiên bảnPHP hỗ trợPhát hànhHết sửa lỗiHết vá bảo mật
Laravel 98.0 – 8.208/02/202208/08/202306/02/2024
Laravel 108.1 – 8.314/02/202306/08/202404/02/2025
Laravel 118.2 – 8.412/03/202403/09/202512/03/2026
Laravel 128.2 – 8.524/02/202513/08/202624/02/2027
Laravel 138.3 – 8.517/03/2026Quý 3/202717/03/2028

Như vậy Laravel 10 không còn nhận bản vá nào. Bản hiện hành là Laravel 13, yêu cầu PHP 8.3 trở lên.

Những điểm mới chính của Laravel 10

Theo release notes, Laravel 10 chủ yếu là bản "bảo trì": nâng phụ thuộc và chuẩn hóa kiểu dữ liệu, kèm vài công cụ mới. Dưới đây là các mục chính.

PHP 8.1 và Composer 2.2 là yêu cầu tối thiểu

Laravel 10 bỏ hỗ trợ PHP 8.0. Máy chủ cần PHP 8.1.0 trở lên và Composer 2.2.0 trở lên. Hãy kiểm tra phiên bản PHP trên máy chủ trước khi nâng cấp.

Khai báo kiểu cho toàn bộ khung ứng dụng

Mọi phương thức trong khung ứng dụng (skeleton) và các file stub dùng cho lệnh make:* đều có kiểu tham số và kiểu trả về; phần docblock khai báo kiểu thừa bị lược bỏ. Thay đổi này tương thích ngược: code cũ không khai báo kiểu vẫn chạy bình thường.

Laravel Pennant: quản lý feature flag

Pennant là gói chính thức giúp bật/tắt tính năng theo người dùng, ví dụ thử nghiệm luồng mới cho 10% người dùng. Pennant có sẵn driver array (trong bộ nhớ) và database.

use Laravel\Pennant\Feature;
use Illuminate\Support\Lottery;

Feature::define('new-onboarding-flow', function () {
    return Lottery::odds(1, 10);
});

if (Feature::active('new-onboarding-flow')) {
    // ...
}

Facade Process để chạy lệnh hệ thống

Thay vì gọi trực tiếp exec() hay Symfony Process, Laravel 10 có facade Process với cú pháp gọn, hỗ trợ chạy song song và giả lập (fake) khi viết test.

use Illuminate\Support\Facades\Process;

$result = Process::run('ls -la');

return $result->output();

Tìm test chậm và khởi tạo dự án với Pest

Lệnh php artisan test có thêm tùy chọn --profile để liệt kê các test chạy chậm nhất. Trình cài đặt Laravel cũng có cờ --pest để tạo dự án dùng Pest thay cho PHPUnit.

php artisan test --profile
laravel new example-application --pest

Lệnh make hỏi tham số khi thiếu

Các lệnh make có sẵn (ví dụ php artisan make:controller) không còn bắt buộc truyền tham số. Nếu gọi thiếu, Artisan sẽ hỏi lần lượt tên class và các tùy chọn cần thiết.

Tạo mật khẩu ngẫu nhiên với Str::password()

Hàm Str::password() sinh mật khẩu ngẫu nhiên gồm chữ, số, ký hiệu và khoảng trắng; mặc định dài 32 ký tự.

use Illuminate\Support\Str;

$password = Str::password();     // 32 ký tự
$password = Str::password(12);   // 12 ký tự

Thay đổi cần sửa khi nâng cấp từ Laravel 9 lên 10

Upgrade Guide chính thức ước tính khoảng 10 phút cho một ứng dụng thông thường. Các điểm hay gặp nhất:

  • Phụ thuộc Composer: laravel/framework lên ^10.0, laravel/sanctum lên ^3.2, spatie/laravel-ignition lên ^2.0; đặt minimum-stability về stable.
  • Thuộc tính $dates của model bị xóa: chuyển sang $casts với kiểu 'datetime'.
  • Bus::dispatchNow và dispatch_now bị xóa: dùng Bus::dispatchSync / dispatch_sync.
  • Redirect::home bị xóa: chuyển hướng tới route có tên, ví dụ Redirect::route('home').
  • Biểu thức DB::raw: không ép kiểu sang chuỗi bằng (string) nữa mà gọi getValue().
  • Monolog 3: kiểm tra lại các gói ghi log bên thứ ba.
  • Thư mục lang: dự án mới không còn sẵn; tạo bằng php artisan lang:publish.
// Trước (Laravel 9): protected $dates = ['deployed_at'];
// Laravel 10:
protected $casts = [
    'deployed_at' => 'datetime',
];

// Khung ứng dụng từ Laravel 11 trở đi khai báo bằng phương thức casts():
protected function casts(): array
{
    return [
        'deployed_at' => 'datetime',
    ];
}

Chi tiết đầy đủ xem tại Upgrade Guide Laravel 10. Những gì thay đổi ở bản trước đó được tóm tắt trong bài các thay đổi của Laravel 9.

Dự án đang chạy Laravel 10 nên làm gì?

Không nên khởi tạo dự án mới bằng Laravel 10. Với dự án đang chạy, nên lên kế hoạch nâng cấp theo từng bản lớn (10 → 11 → 12 → 13), mỗi bước đọc Upgrade Guide tương ứng và chạy lại bộ test. Lưu ý từ Laravel 11, cấu trúc khung ứng dụng gọn hơn: middleware, routing và exception được cấu hình trong bootstrap/app.php thay cho app/Http/Kernel.php; xem thêm cấu trúc thư mục Laravel bản mới.

Để tạo dự án mới với bản hiện hành, làm theo hướng dẫn cài đặt Laravel (PHP 8.3+, Laravel installer hoặc Laravel Herd).

Kinh nghiệm từ Hozitech

Website của Hozitech và nhiều hệ thống web chúng tôi xây dựng chạy trên Laravel. Khi tiếp nhận một dự án cũ, việc đầu tiên là đọc phiên bản trong composer.lock và phiên bản PHP trên máy chủ: nếu framework hoặc PHP đã hết vá bảo mật, nâng cấp được xếp trước mọi tính năng mới. Nếu bạn không có đội kỹ thuật riêng để theo dõi việc này, có thể tham khảo gói chăm sóc và bảo trì website.

Tan Hien

Về tác giả

Founder

Xin chào mình là Hiền hiện đang là Founder của Hozitech. Mình là kỹ sư phần mềm có hơn 9+ năm kinh nghiệm trong lĩnh vực thiết kế website, ứng dụng di động... Gần đây mình đang nghiên cứu thêm về lĩnh vực marketing. Mình rất vui khi được chia sẽ những kiến thức và kinh nghiệm của mình đến mọi người!

Câu hỏi thường gặp

Câu hỏi thường gặp

Sẵn sàng bắt đầu dự án của bạn?

Hãy để chúng tôi giúp bạn biến ý tưởng thành hiện thực. Đăng ký tư vấn miễn phí ngay hôm nay để nhận được giải pháp công nghệ tối ưu cho doanh nghiệp.