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 协议,如果我们的工作有侵犯到您的权益,请及时联系我们。
这篇文章并不完整,最后的
co
应该是components
,是没有复制完整吗感觉相对于7没有太大改进啊,我还是先用一段时间7再说
是不是用于 Dingo,v1、v2 的时候,就方便很多
控制器路由命名空间在哪设置