Laravel 8 的六个更新

1- 模型目录
Laravel 8 将模型包含在了 app 目录下的 Models目录。
app/Models
如果你已经有了一个模型目录的同时运行 artisan make:model 命令后,这些模型类将会被放置在模型目录中。反之,将会像以前一样被放置在 app 目录下。
2- 控制器路由命名空间
以往在 RouteServiceProvider 中有一个 $namespace 属性:
protected $namespace = 'App\Http\Controllers';
Laravel 8 中,这个硬编码的值在被移除后,你可以完全掌控这些控制器的命名空间。
这不会影响升级过程。
3- 路由缓存的改进
php artisan route:cache命令对于生产环境下的性能非常重要,但存在着不允许缓存那些基于 closure 路由的弊端,它原本是为了基于控制器的路由使用。在这之前,即使有一个基于 closure 的路由也会抛出异常,但在 Laravel 8中,你同样可以缓存它了。
4- Blade 组件属性改进
这些改进由其与Nested 组件有关.
例如我你有一个 button 组件:
<button {{ $attributes }}>
{{ $slot }}
</button>
同时我们想要扩展它,如: dangerbutton 组件:
<x-button {{ $attributes->merge(['class' => 'bg-red']) }}>
{{ $slot }}
</x-button>
如你所见 dangerbutton 组件正将自己的 class 属性引入了父级 button 组件。它可以帮助您制作可扩展的组件,现在在 laravel 8 中已经成为可能。
5- 事件监听方面的小改进
以前,如果我们必须监听一个事件,我们可以做如下事情:
Event::listen(OrderCreated::class, function(OrderCreated $event){
info($event->whatever);
});
如你所见,我们在 两个 位置提供了事件 (OrderCreated) 类. 在 Laravel 8 中,此语法仍然有效。但是你也可以只提供 callable 并在你想要监听的事件中键入提示:
Event::listen(function(OrderCreated $event){
info($event->whatever);
});
6- 可排队的匿名事件侦听器
让我们以 Model 的 booting 方法中的 created 事件监听器为例:
protected static function booting()
{
static::created(function(User $user){
info($user->name)
});
}
以前,没有办法对监听器 排队。
Laravel 8 引入了 第一个命名空间函数 😲,名为 queueable,它允许你对这些事件侦听器进行排队。
查看:
use function Illuminate\Events\queueable; 😳
protected static function booting()
{
static::created(queueable(function(User $user){
info($user->name)
}));
}
下一部分,我们将介绍 Laravel 8 带来的 artisan down 命令的改进。
这些改进尤其与 Nested 组件有关.
本文中的所有译文仅用于学习和交流目的,转载请务必注明文章译者、出处、和本文链接
我们的翻译工作遵照 CC 协议,如果我们的工作有侵犯到您的权益,请及时联系我们。
关于 LearnKu
推荐文章: