Laravel 8 的六个更新

Laravel

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 协议,如果我们的工作有侵犯到您的权益,请及时联系我们。

原文地址:https://dev.to/zubairmohsin33/laravel-8-...

译文地址:https://learnku.com/laravel/t/49441

本文为协同翻译文章,如您发现瑕疵请点击「改进」按钮提交优化建议
《L03 构架 API 服务器》
你将学到如 RESTFul 设计风格、PostMan 的使用、OAuth 流程,JWT 概念及使用 和 API 开发相关的进阶知识。
《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
讨论数量: 4
celaraze

这篇文章并不完整,最后的 co 应该是 components,是没有复制完整吗

3年前 评论

感觉相对于7没有太大改进啊,我还是先用一段时间7再说

3年前 评论

控制器路由命名空间

是不是用于 Dingo,v1、v2 的时候,就方便很多

3年前 评论

控制器路由命名空间在哪设置

3年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!