QQ扫一扫联系
Laravel 9 将成为 Laravel 的下一个 LTS 版本,并将在 2022 年初的某个时候发布。在这篇文章中,我们想概述迄今为止宣布的所有新功能和更改。
Laravel 9 原定于今年 9 月左右发布,但 Laravel 团队决定将此版本推迟到 2022 年 1 月:
由于 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 将是最低版本,Tom Schlick 提交了一个 PR 以便在 \Illuminate\Support\Str 类中内部使用 str_contains(),str_starts_with() 和 str_ends_with() 函数。
Symfony 弃用了 SwiftMailer 并且 Laravel 9 将更改为使用 Symfony Mailer 进行所有的邮箱传输,这确实打开了一些突破性的变化。