来看看 Laravel 9 的新功能

2022-01-19 09:03:01    行业资讯   

前言

Laravel 9 将成为 Laravel 的下一个 LTS 版本,并将在 2022 年初的某个时候发布。在这篇文章中,我们想概述迄今为止宣布的所有新功能和更改。

Laravel 9 原定于今年 9 月左右发布,但 Laravel 团队决定将此版本推迟到 2022 年 1 月:

PHP 8 将是 Laravel 9 中的最低要求

由于 Laravel 9 将需要 Symfony 6.0 并且它的最低版本要求是 PHP 8,这意味着 Laravel 9 将具有相同的限制。

匿名迁移

今年早些时候,Laravel 8.37 推出了一个名为匿名迁移的新功能,可以防止迁移类名冲突。

return new class extends Migration {
    /**
     * 运行迁移。
     *
     * @return void
     */
    public function up()
    {
        Schema::table('people', function (Blueprint $table) {
            $table->string('first_name')->nullable();
        });
    }
};

当 Laravel 9 推出时,这将是你运行 php artisan make:migration 时的默认配置

新的查询构造器接口

Laravel 9 将拥有一个新的查询构造器接口。

对于在 IDE 中依赖类型提示进行静态分析、重构或代码完成的开发人员来说,Query\Builder,Eloquent\Builder 和 Eloquent\Relation 之间缺乏共享接口或继承可能会非常棘手:

return Model::query()
    ->whereNotExists(function($query) {
        // $query 是一个 Query\Builder
    })
    ->whereHas('relation', function($query) {
        // $query 是一个 Eloquent\Builder
    })
    ->with('relation', function($query) {
        // $query 是一个 Eloquent\Relation
    });

这个特性增加了一个新的 Illuminate\Contracts\Database\QueryBuilder 接口和一个 Illuminate\Database\Eloquent\Concerns\DecoratesQueryBuilder 特征,它实现了接口,代替了现有的 __call 实现。

PHP 8 字符串函数

由于 PHP 8 将是最低版本,Tom Schlick 提交了一个 PR 以便在 \Illuminate\Support\Str 类中内部使用 str_contains(),str_starts_with() 和 str_ends_with() 函数。

从 SwiftMailer 到 Symfony Mailer

Symfony 弃用了 SwiftMailer 并且 Laravel 9 将更改为使用 Symfony Mailer 进行所有的邮箱传输,这确实打开了一些突破性的变化。


原文地址:https://laravel-news.com/laravel-9

QQ
微信