Laravel 8 现已发布,包括许多新功能,包括 Laravel Jetstream、模型目录、模型工厂类、迁移压扁、速率限制改进、时间测试帮助程序、动态刀片组件以及更多功能。
在我们进入新功能之前,我们想指出,从版本 6 开始,Laravel 现在遵循 semver,并将每六个月发布一个新的主要版本。您可以在这里看到发布过程的工作原理。
拉维尔喷气流
Laravel Jetstream改进了以前版本中现有的 Laravel UI 基架。它为新项目提供了一个起点,包括登录、注册、电子邮件验证、双重身份验证、会话管理、通过 Laravel 的 API 支持和团队管理。
模型目录
Laravel 8 的应用程序框架包括一个目录。所有生成器命令都假定 模型中存在 。但是,如果此目录不存在,框架将假定应用程序将模型保留到文件夹中。app/Models
app/Models
app/
模型工厂类
Eloquent 模型工厂现在从 Laravel 8 开始以类为基础,改进了对工厂之间关系的支持(即,用户拥有许多职位)。我想你会同意新的语法是多么真棒, 通过新的和改进的模型工厂生成记录:
use App\Models\User;
User::factory()->count(50)->create();
// using a model state "suspended" defined within the factory class
User::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);
});
如您所看到的,该方法采用 HTTP 请求实例,使您可以完全控制动态限制请求。for()
时间测试帮助程序
Laravel 用户通过优秀的碳 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" />
了解更多有关拉拉维尔 v8...
这些只是Laravel 8中的一些新功能,要查看完整的列表,请查看Laravel 8发行说明以及升级指南。此外,如果你想要一个简单的更新方式,不要忘记Laravel移位。
Taylor 还在 Laracon Online 上演练了其中一些功能,如果您想查看,您仍然可以购买机票。此外,Laracasts: Laravel 8系列中的新功能可帮助您快速获得此版本中的新功能。
与所有的版本一样,Laravel 是由这么多人促成的,我们要感谢所有贡献者、提交 PR、分享想法以及使用框架的人。Laravel 是真正的全球团队努力。