Laravel 7 の正式リリース日は 2020 年 3 月 3 日です。 Laravel Frameworkのlaravelメジャーバージョンリリースポリシーによると、6か月ごと(2月と8月)に、これは別のメジャーバージョンになります。これはLTSリリースではないため、Laravelリリースサポートポリシーによれば、2020年9月3日まで6か月のバグ修正サポート、2021年3月3日まで1年間のセキュリティ問題修正サポートが提供されます。 Laravel 7 の新機能と改善点を見てみましょう。 (laravel 技術記事)
Laravel 7 の新機能
● Laravel Airlock
● HTTP クライアント用 Zttp
#CORS サポート
##● カスタム Eloquent Cast##● スムーズな文字列操作
##● ブレード X#● カスタマイズ可能なスタブ
● クエリ時間の変換
##● 複数のメールドライバー 新しいアーティザンコマンドLaravel 7 の改善点
#???ルーティングモデルバインディング改善点
#● 2 倍高速なルーティング##● データベース キューの改善
##● マークダウン電子メール テンプレートの改善##● その他のバグ修正と改善。
Laravel Airlock
Laravel Airlock は API 認証用の公式パッケージです。シンプルなトークンベースの API 認証、トークン発行、トークン機能、モバイル アプリ認証などを提供します。
Zttp (HTTP クライアント用)
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 (Cross-Origin Resource Sharing) をサポートするようになりました。すべての開発者が API 開発で CORS の問題に遭遇したことがあるということをよく理解する必要があります。 Laravel 7 は、設定値を使用して OPTION リクエストに自動的に応答するようになりました。 Laravel 7 には、すべてを実行する HandleCors ミドルウェアがすぐに付属しています。
Custom Eloquent Cast Laravel 7 のカスタム eloquent キャストは、もう 1 つの優れた機能です。この機能を使用すると、カスタム キャストを追加できるようになります。 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);
}
}
<?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 の機能を使用すると、クラスレスコンポーネントを作成できます。
X コンポーネントの生成
@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では。 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 に追加されました。新しいアルティザン テスト コマンドは、美しい UX とテストに関する役立つ情報を提供します。
php artisan test
● ルーティング モデル バインディングの改善
#● 2 倍高速なルーティング#● データベース キューの改善# マークダウン電子メール テンプレートの改善
##● その他のバグ修正と改善。ルート モデル バインディングの改善
カスタム キーデフォルトでは、ルート モデル バインディングは id フィールドとともに使用されます。これでカスタマイズできるようになりました。Route::get('posts/{post:slug}', function (App\Post $post) { return $post; });
use App\Post; use App\User; Route::get('api/users/{user}/posts/{post:slug}', function (User $user, Post $post) { return $post; });