原文连接:learnku.com/laravel/t/4…
讨论请前往专业的 Laravel 开发者论坛:learnku.com/Laravelphp
Laravel 7 的正式发布日期为 2020年3月3日。根据 Laravel Framework 每6个月的主要 laravel 版本发布策略(2月和 8月),它是另外一个主要版本。它不是 LTS 版本,所以根据 Laravel 版本支持政策,他们提供 2020年9月3日以前的 6个月错误修复,以及直到 2021年3月3日以前的 1年安全问题修复支持。让咱们看一下 Laravel 7 的新功能和改进。laravel
Laravel Airlock 是用于API身份验证的官方软件包。它提供了简单的令牌基础 API 身份验证,令牌发行,令牌能力,移动应用程序身份验证等。数据库
使用 Zttp,向 API 发出 HTTP 请求将是更好,更简洁的方法。json
发布请求api
<?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',
]);
复制代码
响应bash
$response['foo']
$response->body()
$response->json()
$response->status()
$response->ok()
复制代码
如今 Laravel 7 开箱即用地支持 CORS (跨域资源共享)。 你应该更了解每一个开发者在 API 开发中都遇到过 CORS 问题。如今,Laravel 7 使用配置值自动响应 OPTION 请求。Laravel 7 开箱即用的 HandleCors
中间件能够搞定一切。markdown
Laravel 7 中的自定义 eloquent casting 是另外一个很酷的功能。此功能将使您可以添加自定义 casts。让咱们看一下 JSON Caster。less
<?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
复制代码
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" />
复制代码
如今,您能够使用 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));
复制代码
Laravel 7 中添加了一个新的 artisan 测试命令。新的 artisan 测试命令为您提供了精美的 UX 和有关测试的有用信息。
php artisan test
复制代码
自定义 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;
});
复制代码
使用 route:cache 时,Laravel 7 的路由匹配性能比 laravel 6 快 2倍
Laravel 7 对使用 MySQL 8+ 做为数据库支持队列的应用程序进行了改进。
使用 Tailwind CSS 调色板,邮件的默认 markdown 模板外观更加新颖。能够根据须要发布和自定义模板。
原文连接:learnku.com/laravel/t/4…
讨论请前往专业的 Laravel 开发者论坛:learnku.com/Laravel