美文网首页Laravel China 社区PHP / Laravel / 全栈Laravel
Laravel 7 发布在即,过来看下有哪些新功能

Laravel 7 发布在即,过来看下有哪些新功能

作者: summerbluet | 来源:发表于2020-02-26 21:19 被阅读0次
    Laravel

    原文链接:https://learnku.com/laravel/t/40981

    讨论请前往专业的 Laravel 开发者论坛:https://learnku.com/Laravel

    Laravel 7 的正式发布日期为 2020年3月3日。根据 Laravel Framework 每6个月的主要 laravel 版本发布策略(2月和 8月),它是另一个主要版本。它不是 LTS 版本,因此根据 Laravel 版本支持政策,他们提供 2020年9月3日之前的 6个月错误修复,以及直到 2021年3月3日之前的 1年安全问题修复支持。让我们看一下 Laravel 7 的新功能和改进。

    Laravel 7的新功能

    • Laravel Airlock
    • 适用于 HTTP 客户端的 Zttp
    • CORS 支持
    • 自定义 Eloquent Cast
    • 流畅的字符串操作
    • Blade X
    • 可定制的 Stubs
    • 查询时间转换
    • 多个邮件驱动程序
    • 新 Artisan 命令

    Laravel 7 中的改进

    • 路由模型绑定改进
    • 2倍更快的路由
    • 数据库队列改进
    • Markdown 邮件模板改进
    • 以及更多的错误修复和改进。

    Laravel Airlock

    Laravel Airlock 是用于API身份验证的官方软件包。它提供了简单的令牌基础 API 身份验证,令牌发行,令牌能力,移动应用程序身份验证等。

    HTTP客户端的Zttp

    使用 Zttp,向 API 发出 HTTP 请求将是更好,更简洁的方法。

    发布请求

    <?php
    use Illuminate\Support\Facades\Http;
    
    $response = Http::post($url);
    
    $response = Http::post($url, [
        'site' => 'Laravel Article',
    ]);
    

    获取响应

    $response = Http::get($url);
    $response = Http::get($url,['foo'=>'bar']);
    

    带请求头

    $response = Http::withHeaders(['foo' => 'bar'])->post($url, [
        'baz' => 'qux',
    ]);
    

    响应

    $response['foo']
    $response->body()
    $response->json()
    $response->status()
    $response->ok()
    

    CORS 支持

    现在 Laravel 7 开箱即用地支持 CORS (跨域资源共享)。 你应该更了解每个开发者在 API 开发中都遇到过 CORS 问题。现在,Laravel 7 使用配置值自动响应 OPTION 请求。Laravel 7 开箱即用的 HandleCors 中间件可以搞定一切。

    自定义 Eloquent Cast

    Laravel 7 中的自定义 eloquent casting 是另一个很酷的功能。此功能将使您能够添加自定义 casts。让我们看一下 JSON Caster。

    <?php
    
    use Illuminate\Contracts\Database\Eloquent\CastsAttributes;
    
    class Json implements CastsAttributes
    {
        public function get($model, $key, $value, $attributes)
        {
            return json_decode($value, true);
        }
    
        public function set($model, $key, $value, $attributes)
        {
            return json_encode($value);
        }
    }
    

    现在,我们可以在模型中使用自定义的 eloquent cast 了。

    <?php
    
    namespace App;
    
    use App\Casts\Json;
    use Illuminate\Database\Eloquent\Model;
    
    class User extends Model
    {
    
        protected $casts = [
            'extra' => Json::class,
        ];
    }
    

    流畅的字符串操作

    在 Laravel 7 中,您可以使用 Illuminate\Support\Str 类来做更多更酷的面向对象的事情。

    $currentVersion = (string) Str::of('  Laravel 6.x ');
    return $currentVersion->trim()
            ->replace('6.x', '7.x')
            ->slug();
    
    // laravel-7x
    

    Blade X

    Laravel 7 Blade X 功能使您能够制作 class-less 的组件。

    生成 x-component

    @php($user = $user ?? Auth::user())
    @php($size = $size ?? 50)
    
    <img
        class="inline-block rounded-full"
        src="{{ $user->gravatarUrl($size) }}"
        width="{{ $size }}"
        height="{{ $size }}"
    />
    

    Blade x 用法

    <x-avatar/>
    <x-avatar size="40" />
    <x-avatar size="100" />
    

    自定义 Stubs

    现在,您可以使用 artisan 命令在 Laravel 7.x 中自定义 stubs。

    php artisan stub:publish
    

    查询时间转换

    Laravel 7 提供了 withCasts 方法,可帮助您在运行查询时强制转换值。让我们举个例子。

    $users = User::select([
        'users.*',
        'last_posted_at' => Post::selectRaw('MAX(created_at)')->whereColumn('user_id', 'users.id')
    ])
    ->withCasts(['last_posted_at' => 'date'])
    ->get();
    

    多个邮件驱动程序

    Laravel 7 将允许您使用单个应用程序设置多个邮件驱动程序。

    Mail::mailer('noreply')
            ->to($request->user())
            ->send(new PostUpdated($post));
    

    新 Artisan 命令

    Laravel 7 中添加了一个新的 artisan 测试命令。新的 artisan 测试命令为您提供了精美的 UX 和有关测试的有用信息。

    php artisan test
    

    Laravel 7 中的改进

    • 路由模型绑定改进
    • 2倍更快的路由
    • 数据库队列改进
    • Markdown 邮件模板改进
    • 以及更多的错误修复和改进。

    路由模型绑定改进

    自定义 Key

    默认情况下,路由模型绑定与 id 字段一起使用。现在您可以自定义它。

    Route::get('posts/{post:slug}', function (App\Post $post) {
        return $post;
    });
    

    自动作用域

    Laravel 7 将使用其辨别惯例使用的方法来确认程序中的关系调用,从而自动确定查询的范围以检索嵌套模型。

    use App\Post;
    use App\User;
    
    Route::get('api/users/{user}/posts/{post:slug}', function (User $user, Post $post) {
        return $post;
    });
    

    2倍更快的路由

    使用 route:cache 时,Laravel 7 的路由匹配性能比 laravel 6 快 2倍

    数据库队列改进

    Laravel 7 对使用 MySQL 8+ 作为数据库支持队列的应用程序进行了改进。

    Markdown 邮件模板改进

    使用 Tailwind CSS 调色板,邮件的默认 markdown 模板外观更加新颖。可以根据需要发布和自定义模板。

    原文链接:https://learnku.com/laravel/t/40981

    讨论请前往专业的 Laravel 开发者论坛:https://learnku.com/Laravel

    相关文章

      网友评论

        本文标题:Laravel 7 发布在即,过来看下有哪些新功能

        本文链接:https://www.haomeiwen.com/subject/cptgchtx.html