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 7的新功能
● Laravel Airlock
● 適用於HTTP 用戶端的Zttp
● CORS 支援
● 自訂Eloquent Cast
● 流暢的字串操作
● Blade X
● 可自訂的Stubs
● 查詢時間轉換
● 多個郵件驅動程式
● 新Artisan 指令
Laravel 7 中的改進
● 路由模型綁定改善
● 2倍更快的路由
● 資料庫佇列改進
##● Markdown 郵件範本改善#● 資料庫佇列改善問題##● Markdown 郵件範本改善
#● 以及更多的錯誤修復與改進。
Laravel AirlockLaravel 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()
現在Laravel 7 開箱即用地支援CORS (跨域資源共用)。你應該更了解每個開發者在 API 開發中都曾經遇到 CORS 問題。現在,Laravel 7 使用設定值自動回應 OPTION 請求。 Laravel 7 開箱即用的 HandleCors 中間件可以搞定一切。
自訂 Eloquent CastLaravel 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
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
● 路由模型綁定改善
● 2倍更快的路由
#●資料庫佇列改進
● Markdown 郵件範本改進
● 以及更多的錯誤修復與改進。
路由模型綁定改進自訂 Key
#預設情況下,路由模型綁定與 id 欄位一起使用。現在您可以自訂它。
Route::get('posts/{post:slug}', function (App\Post $post) { return $post; });
自動作用域
Laravel 7 將使用其辨別慣例使用的方法來確認程式中的關係調用,從而自動確定查詢的範圍以檢索巢狀模型。 使用route:cache 時,Laravel 7 的路由比對效能比laravel 6 快2倍 Laravel 7 對使用MySQL 8 作為資料庫支援佇列的應用程式進行了改進。 使用 Tailwind CSS 調色板,郵件的預設 markdown 模板外觀更加新穎。可以根據需要發布和自訂模板。 更多程式相關內容,請關注php中文網use App\Post;
use App\User;
Route::get('api/users/{user}/posts/{post:slug}', function (User $user, Post $post) {
return $post;
});