Laravel 8 现已发布!
发布于 作者: Paul Redmond
Laravel 8 现已 发布,并包含许多新功能,包括 Laravel Jetstream、模型目录、模型工厂类、迁移压缩、速率限制改进、时间测试助手、动态刀片组件等等。
在我们开始介绍新功能之前,我们想指出,从版本 6 开始,Laravel 现在遵循语义化版本控制,并且每六个月发布一个新的主要版本。您可以看到 发布流程是如何运作的。
Laravel Jetstream
Laravel Jetstream 改进了以前版本中找到的现有 Laravel UI 脚手架。它为新项目提供了一个起点,包括登录、注册、电子邮件验证、双因素身份验证、会话管理、通过 Laravel 的 API 支持以及团队管理。
模型目录
Laravel 8 的应用程序骨架包含一个 app/Models
目录。所有生成器命令都假设模型存在于 app/Models
中;但是,如果此目录不存在,框架将假设应用程序将模型保留在 app/
文件夹中。
模型工厂类
从 Laravel 8 开始,Eloquent 模型工厂现在是基于类的,改进了对工厂之间关系的支持(例如,用户拥有许多帖子)。我认为您会同意使用改进后的模型工厂生成记录的新语法多么棒。
use App\Models\User; User::factory()->count(50)->create(); // using a model state "suspended" defined within the factory classUser::factory()->count(5)->suspended()->create();
迁移压缩
如果您的应用程序包含许多迁移文件,您现在可以将它们压缩成单个 SQL 文件。运行迁移时,此文件将首先执行,然后是任何不在压缩的架构文件中的剩余迁移文件。压缩现有迁移可以减少迁移文件膨胀,并可能提高运行测试时的性能。
改进的速率限制
Laravel 8 对现有的速率限制功能进行了改进,同时支持与现有节流中间件的向后兼容性,并提供更大的灵活性。Laravel 8 有一个名为 *速率限制器* 的概念,您可以通过外观来定义。
use Illuminate\Cache\RateLimiting\Limit;use Illuminate\Support\Facades\RateLimiter; RateLimiter::for('global', function (Request $request) { return Limit::perMinute(1000);});
如您所见,for()
方法接受 HTTP 请求实例,让您可以完全控制动态限制请求。
时间测试助手
Laravel 用户一直通过优秀的 Carbon PHP 库对时间修改拥有完全控制权。Laravel 8 通过提供方便的测试助手来操纵测试中的时间,将这一步进一步推进。
// Travel into the future...$this->travel(5)->milliseconds();$this->travel(5)->seconds();$this->travel(5)->minutes();$this->travel(5)->hours();$this->travel(5)->days();$this->travel(5)->weeks();$this->travel(5)->years(); // Travel into the past...$this->travel(-5)->hours(); // Travel to an exact time...$this->travelTo(now()->subHours(6)); // Return back to the present time...$this->travelBack();
使用这些方法时,每次测试之间的时间将重置。
动态刀片组件
有时您需要在运行时动态呈现刀片组件。Laravel 8 提供了 <x-dynamic-component/>
来呈现组件。
<x-dynamic-component :component="$componentName" class="mt-4" />
了解更多关于 Laravel v8 的信息…
这些只是 Laravel 8 中的一些新功能,要查看完整列表,请查看 Laravel 8 发布说明 以及 升级指南。此外,如果您想要一种简单的更新方法,请不要忘记 Laravel Shift。
Taylor 还在 Laracon 在线 上介绍了其中一些功能,如果您想了解,仍然可以购买门票。此外,Laracasts:Laravel 8 中的新功能 系列可以帮助您快速了解此版本中的新功能。
与所有版本一样,Laravel 的诞生要归功于许多人,我们感谢所有做出贡献、提交 PR、分享想法以及使用该框架的人。Laravel 确实是一项全球性的团队合作努力。