Laravel 5.6 đã lên sóng, và đây là những điểm mới nổi bật nhất!

2506

Laravel 5.6 đã chính thức ra mắt phiên bản mới nhất! Phiên bản này có rất nhiều feature mới, và dưới đây chúng tôi đã đưa ra những feature nổi bật hơn hẳn các bản trước. Để xem được danh sách đầy đủ tất cả các thay đổi, hãy truy cập vào changelog (GitHub).

Những cải thiện về logging

Tính năng nổi bật nhất trong Laravel 5.6 đó là những cải thiện về logging. Với những người mới,cấu hình logging v5.6 chuyển từ file config/app.php sang file mới config/logging.php.

Bạn sẽ thiết lập “stacks” để gửi message log đến nhiều công cụ quản lý và theo dõi. Ví dụ, bạn có thể gửi đi tất cả các message debug đến log hệ thống và gửi các log lỗi đến slack.

Bạn có thể đọc thêm thiết lập và tùy chỉnh log bằng cách truy cập vào tư liệu logging.

Single Server Task Scheduling

Nếu bạn có một task scheduler chạy trên nhiều server, task sẽ chạy riêng rẽ trên mỗi server. Bạn có thể cấu hình task chỉ nên chạy trên một server bằng method onOneServer() , về phần này chưa được dùng nhiều nên anh em nào đã có kinh nghiệm xin vui lòng chỉ giáo thêm ở comment:

$schedule->command('report:generate')
    ->fridays()
    ->at('17:00')
    ->onOneServer();

Lưu ý: bạn phải sử dụng cache driver memcached hoặc redis như một cache driver mặc định để tận dụng lợi thế của task mỗi single server task scheduling trong phiên bản Laravel 5.6.

Dynamic Rate Limiting

Laravel 5.6 công bố dynamic rate limiting giúp bạn linh hoạt hơn và dễ dàng giới hạn những chức năng cơ bản của một user:

Route::middleware('auth:api', 'throttle:rate_limit,1')
    ->group(function () {
        Route::get('/user', function () {
            //
        });
    });

Trong ví dụ trên, rate_limit là một thuộc tính của model AppUser để xác định số lượng request được cho phép trong một khoảng giới hạn thời gian.

Broadcast Channel Classes

Giờ đây bạn có thể sử dụng các class channel trên file routes/channels.php của mình thay vì sử dụng closure.

Để tạo nên một class channel mới, Laravel 5.6 cung cấp một lệnh make:channel mới:

php artisan make:channel OrderChannel

Bạn có thể khai báo channel trên file routes/channels.php như sau:

use AppBroadcastingOrderChannel;

Broadcast::channel('order.{order}', OrderChannel::class);

API Controller

Giờ đây bạn có thể tạo ra một resource controller cho các API mà không bao gồm những thao tác create và edit không cần thiết, những cái mà chỉ apply vào các resource controller trả về HTML. Để tạo ra một resource controller, sử dụng flag --api:

php artisan make:controller API/PhotoController --api

Eloquent Date

Bạn có thể chủ động tự tùy chỉnh format của ngày và ngày giờ Eloquent:

protected $casts = [
    'birthday' => 'date:Y-m-d',
    'joined_at' => 'datetime:Y-m-d H:00',
];

Format này được dùng trên phần chuyển đổi model thành một array hoặc JSON data.

Blade Component Aliases

Giờ đây bạn có thể đặt bí danh cho các blade components giúp việc truy cập tiện lợi hơn. Ví dụ, nếu bạn lưu component vào resources/views/components/alert.blade.php bạn có thể sử dụng method component() để đặt một tên ngắn hơn:

Blade::component('components.alert', 'alert');

Sau đó bạn có thể render nó bằng tên được đặt:

@component('alert')
    <p>This is an alert component</p>
@endcomponent

Argon2 Password Hashing

Laravel 5.6 hỗ trợ thuật toán mã hóa mật khẩu cho PHP 7.2+ (chỉ có ver php này hỗ trợ thuật toán trên). Bạn có thể kiểm soát mã hóa driver nào được sử dụng mặc định trong file config/hashing.php mới.

Bạn có thể đọc thêm về hỗ trợ thuật toán Argon2i hashing của Laravel 5.6 trong bài báo của chúng tôi.

Các method UUID 

Hai method mới đã có mặt trên class IlluminateSupportStr để tạo ra Universal Unique Identifiers (UUID):

// The methods return a RamseyUuidUuid object

return (string) Str::uuid();

return (string) Str::orderedUuid();

Method orderedUuid() sẽ tạo timestamp cho UUID đầu tiên giúp cho việc database indexing dễ dàng hơn và hiệu quả hơn.

Collision

Chúng tôi mới viết về Collision coming to Laravel 5.6 là một dev dependency, cung cấp  báo cáo lỗi trực quan trong bảng điều khiển:

Collision Package in Laravel 5.6

Bootstrap 4

Tất cả các frontend scaffolding và example Vue component giờ đây đều sử dụng Bootstrap 4. Chúng ta đã dùng Bootstrap 4 trong bản beta, và thậm chí còn tạo một Bootstrap 4 Laravel preset. Thật tốt khi thấy Bootstrap 4 ổn định đi kèm với Laravel 5.6!

Tìm hiểu thêm về Laravel 5.6

Để nâng cấp Laravel lên v5.6, bạn có thể tham khảo hướng dẫn nâng cấp. Việc nâng cấp từ 5.5 lên 5.6 ước tính tốn khoảng từ 10 đến 30 phút. Hiện tại các việc làm IT lương cao liên quan đến Laravel cũng được các doanh nghiệp tuyển dụng rất nhiều.

Tham khảo thêm các vị trí ứng tuyển lập trình Laravel lương cao tại đây

TopDev via Laravel News

  Tính năng Frontend Presets của Laravel 5.5
  Laravel, bạn đã viết đúng?