Có gì mới trong bản phát hành Laravel 5.7?

Laravel là một framework PHP phổ biến nhất, được hỗ trợ tích cực và đóng góp cho dự án mã nguồn mở, sắp đạt được bản phát hành tiếp theo 5.7 vào tháng 8 năm 2018.

Bản phát hành sẽ nhận được bản sửa lỗi cho đến tháng 2 năm 2019 và các bản sửa lỗi bảo mật cho đến tháng 8 năm 2019.

Bản phát hành này tiếp tục cải tiến cho phiên bản 5.6 trước đó và cũng bao gồm một số tính năng mới thú vị.

Trong bài đăng trên blog này, tôi liệt kê một số tính năng thú vị đã được nhóm Laravel công bố và lấy một số tài liệu tham khảo từ kho lưu trữ github.

Tôi sẽ tiếp tục cập nhật bài đăng này lên đến bản phát hành cuối cùng được công bố từ nhóm chính thức, vì yêu cầu kéo mới đến từ các cộng tác viên cộng đồng.

Tuyển dụng Laravel lương cao up to 2000 USD

1. Laravel Nova

Thư viện Laravel được chờ đợi nhiều nhất đã được Taylor công bố trong Laracon US 2018, và đây là một gói bảng quản trị đẹp cho ứng dụng Laravel. Đây là một bảng điều khiển quản trị mã cho dự án Laravel mới hoặc hiện tại của bạn. Phiên bản trước của Laravel vẫn hỗ trợ Nova, vì nó là một gói trình soạn thảo đơn giản. Để biết sâu hơn về nó theo các tài liệu chính thức, cũng đi qua bài viết giới thiệu trên Medium của Taylor.

Laravel Nova chính thức được phát hành vào ngày 22 tháng 8 năm 2018, bản phát hành đầu tiên v1.0. * (Orion) hiện có sẵn để mua từ website chính thức .

2. Xác minh email

Framework giới thiệu tính năng xác minh email tùy chọn với bản phát hành này. Để sử dụng tính năng này, bạn phải thêm cột thời gian email_verified_at vào bảng user thông qua famework migration.

Để tư vấn cho người dùng mới tham gia xác minh email của họ, mô hình Người dùng sẽ triển khai giao diện MustVerifyEmail.

<?php

namespace App;

use Illuminate\Notifications\Notifiable;
use Illuminate\Contracts\Auth\MustVerifyEmail;
use Illuminate\Foundation\Auth\User as Authenticatable;

class User extends Authenticatable implements MustVerifyEmail
{
    // ...
}

Sau khi triển khai giao diện, các thành viên mới được đăng ký sẽ nhận được email chứa liên kết xác minh đã đăng ký. Khi người dùng nhấp vào liên kết này, ứng dụng sẽ tự động cập nhật cơ sở dữ liệu và chuyển hướng người dùng đến vị trí dự định.

Tính năng mới này cũng giới thiệu một phần mềm trung gian đã được xác minh. Nếu bạn muốn bảo vệ các route của ứng dụng của bạn từ các thành viên được xác minh, nó có thể được gắn vào các route ứng dụng.

'verified' => \Illuminate\Auth\Middleware\EnsureEmailIsVerified::class,

3. Cổng / Chính sách người dùng của khách

Phiên bản trước của Laravel được sử dụng để trả về false nếu người dùng chưa được xác thực muốn truy cập vào ứng dụng. Tuy nhiên, với phiên bản mới (5.7) nó bây giờ sẽ cho phép khai báo một gợi ý kiểu “tùy chọn” hoặc cung cấp một giá trị mặc định null để cho phép người dùng khách vượt qua các kiểm tra ủy quyền.

Gate::define('update-product', function (?User $user, Product $product) {
    // ...
});

4. Symfony Dump Server

Symfony của dump-server đang tích hợp tới Laravel 5.7. Nó là một lệnh thông qua gói được xây dựng bởi một thành viên cộng đồng của Laravel, Marcel Pociot.

Tính năng này sẽ hữu ích khi gỡ lỗi trên ứng dụng của bạn mà không làm gián đoạn thời gian chạy ứng dụng.

Lệnh chạy ở chế độ nền và thu thập dữ liệu được truyền từ ứng dụng và hiển thị đầu ra thông qua chế độ console.

php artisan dump-server

// Output to the HTML file.
php artisan dump-server --format=html > report.html

Package là một mã nguồn mở, đóng góp nếu bạn có bất kỳ ý tưởng nào về nó.

5. Trình tạo URL và Cú pháp có thể gọi

Để tạo các URL cho các hành động controller, Laravel bây giờ hỗ trợ cú pháp mảng có thể gọi, thay vì chỉ các chuỗi.

Trước đây,

$url = action('BlogController@index');

$url = action('BlogController@view', ['id' => 1]);

Bây giờ,

use App\Http\Controllers\HomeController;

$url = action([BlogController::class, 'index']);

$url = action([BlogController::class, 'view'], ['id' => 1]);

6. Liên kết Paginator

Bây giờ, bạn có thể kiểm soát số lượng liên kết pagination trên mỗi bên của thiết kế URL được phân trang. Theo mặc định, sẽ có ba liên kết được tạo trên mỗi bên của liên kết paginator. Phương thức vừa được giới thiệu onEachSide () cho phép điều khiển chúng bằng Laravel 5.7.

{{ $pages->onEachSide(5)->links() }}

7. Read / Write Streams method in Filesystem

Laravel 5.7 introduces new methods for the Filesystem integration.

Storage::disk('s3')->writeStream(
        'destination-file.zip',
        Storage::disk('local')->readStream('source-file.zip')
    );

8. Thông báo Localization

Giờ đây, bạn có thể chỉ định ngôn ngữ cho các thông báo gửi khác với ngôn ngữ hiện tại.

Lớp Illuminate \ Notifications \ Notification thêm phương thức miền địa phương mới để gán ngôn ngữ mong muốn.

$user->notify((new NewUser($user))->locale('np'));

Bạn cũng có thể sử dụng mặt tiền để đặt localization cho nhiều mục nhập thông báo.

Notification::locale('np')
        ->send($subscribers, new WeeklyNewsletter($newsletter));

9. Thông báo lỗi được cải thiện

Bây giờ bạn có thể theo dõi tốt hơn các thông báo lỗi của bạn bằng ứng dụng Laravel của bạn. Như của Laravel 5.7, bạn sẽ nhận được một thông báo súc tích gọn gàng hơn rằng phương thức này không tồn tại trên mô hình cụ thể.

10. Thay đổi thư mục Resources

Một chút thay đổi đối với thư mục resources đi kèm với bản phát hành mới.

Sự thay đổi này đã được Taylor công bố với một tweet, vì tài sản trực tiếp sẽ biến mất và js, sass, lang, lượt xem sắp ra vào thư mục resources.

Laravel 5.7 resources directory changes.

Khi bạn nâng cấp ứng dụng của mình lên 5.7, bạn không cần phải tạo lại thư mục resources / asset theo cấu trúc thư mục mới hơn. Cấu trúc cũ hơn sẽ vẫn hoạt động.

11. Kiểm tra các lệnh Artisan

Nhân viên đầu tiên của Laravel (Mohamed Said) gần đây đã đóng góp một tính năng tuyệt vời trong khuôn khổ để kiểm tra các lệnh thủ công. Ông đã thông báo qua tweet của mình về tính năng này, và cũng được ghi lại trong tài liệu chính thức. Bây giờ, với phần bổ sung này, framework bây giờ cung cấp một API đơn giản để thử nghiệm các ứng dụng console yêu cầu nhập liệu vào của người dùng.

{
    public function testInstallTest()
    {
        $this->artisan('app:setup', [
            'name' => 'Setup New Project'
        ])
            ->expectsQuestion('Are you sure you want to start installation ?', 'Yes')
            ->expectsOutput('Initializing...')
            ->expectsQuestion('Please select your preferred version', 'v2.5')
            ->expectsOutput('Installing...')
            ->expectsQuestion('Do you want to run composer dump -o ?', 'Yes')
            ->expectsOutput('Generating Optimized Autoload Files...')
            ->assertExitCode(0);
    }
}

Phần kết luận

Cảm ơn bạn đã đọc bài viết này cho đến khi kết thúc, hãy làm theo bài viết này vào những ngày sau để biết thêm nhiều tính năng mới sắp được phát hành 5.7.

Bài viết gốc được đăng tải tại Sujipthapa.co