このパッケージは、Laravel アプリケーションで使用するための、Fractal の優れた簡単なラッパーを提供します。 Fractal が何をするのか分からない場合は、その紹介を覗いてみてください。簡単に言えば、Fractal は、API で使用する前にデータを変換するのに非常に役立ちます。
フラクタル データを使用すると、次のように変換できます。
LeagueFractalManager を使用;LeagueFractalResourceCollection を使用;$books = [ ['id' => 1, 'title' => 'Hogfather', 'characters' => [...]], ['id' => 2、'title' => 'Game Of KillEveryone'、'characters' => [...]] ];$manager = new Manager();$resource = new Collection($books, new BookTransformer());$manager->parseincludes('characters');$manager->createData($resource)->toArray() ;
このパッケージを使用すると、そのプロセスが少し簡単になります。
フラクタル() ->コレクション($books) ->transformWith(new BookTransformer()) ->includeCharacters() ->toArray();
ファサードの愛好家は、ファサードが提供されていることを知ってうれしいでしょう。
Fractal::collection($books)->transformWith(new BookTransformer())->toArray();
データを迅速に変換するために使用できる非常に短い構文もあります。
フラクタル($books, new BookTransformer())->toArray();
Laravel コレクションから直接変換することもできます。
collect($books)->transformWith(new BookTransformer());
Laravel コレクションから直接変換することは、Eloquent の結果に特に役立ちます。
Users::all()->transformWith(new UserTransformer())->toArray();
Spatie は、ベルギーのアントワープに拠点を置くウェブデザイン会社です。当社のすべてのオープンソース プロジェクトの概要は、当社の Web サイトでご覧いただけます。
私たちはクラス最高のオープンソース パッケージの作成に多くのリソースを投資しています。有料製品のいずれかを購入することで、私たちをサポートできます。
当社のどのパッケージを使用しているかについて、故郷から葉書を送っていただき、誠にありがとうございます。当社の住所は、お問い合わせページに記載されています。受け取ったすべてのポストカードをバーチャル ポストカード ウォールに公開します。
Composer を介してパッケージを取り込むことができます。
作曲家には spatie/laravel-fractal が必要です
パッケージは自動的に登録されます。
デフォルトのシリアライザー、デフォルトのページネーター、またはデフォルトのフラクタル クラスSpatieFractalFractal
変更する場合は、構成ファイルを公開する必要があります。
php 職人ベンダー:publish --provider="SpatieFractalFractalServiceProvider"
Laravel 5.5 にアップグレードする場合は、既存の設定ファイルの名前をlaravel-fractal.phpからfractal.phpに変更する必要があります。
公開されたファイルの内容は次のとおりです。
return [/* * 変換を実行するときに使用されるデフォルトのシリアライザー。 * Fractal のデフォルトのものを使用するには、空のままにすることができます。これは * 文字列または LeagueFractalSerializerSerializerAbstract サブクラスのいずれかになります。 */'default_serializer' => '',/* 変換を実行するときに使用されるデフォルトのページネータ。 * Fractal のデフォルトのものを使用するには、空のままにすることができます。これは * 文字列または LeagueFractalPaginatorPaginatorInterface サブクラスのいずれかになります。 */'default_paginator' => '',/* * LeagueFractalSerializerJsonApiSerializer は、この値を * 生成されたリンクのプレフィックスとして使用します。これを無効にするには「null」に設定します。 */'base_url' => null,/* * デフォルトの SpatieFractalFractal インスタンスをオーバーライドまたは拡張する場合は、 * 使用するクラスの名前を指定します。 */'fractal_class' => SpatieFractalFractal::class,'auto_includes' => [/* * 有効にすると、Fractal は自動的にインクルードを追加します * `include` リクエスト パラメーターに存在する人物の名前。 */'enabled' => true,/* * 含めるインクルードを探す必要があるリクエスト内のキーの名前。 */'request_key' => 'include', ],'auto_excludes' => [/* * 有効にすると、Fractal は * `exclude` リクエスト パラメーターに存在するユーザーの名前を除外するものを自動的に追加します。 */'enabled' => true,/* * 除外対象を探す必要があるリクエスト内のキーの名前。 */'request_key' => '除外', ],'auto_fieldsets' => [/* * 有効にすると、Fractal は * `fields` リクエスト パラメーターに存在する名前のフィールドセットを自動的に追加します。 */'enabled' => true,/* * リクエスト内のキーの名前。解析するフィールドセットを検索する必要があります。 */'request_key' => 'フィールド', ]、 ];
このパッケージが提供するすべてのメソッドについては、 spatie/fractalistic
のドキュメントを参照してください。
すべてのコード例で、 Fractal::create()
の代わりにfractal()
を使用できます。
json データを含む応答を返すには、Laravel アプリでこれを行うことができます。
$books = fractal($books, new BookTransformer())->toArray();return response()->json($books);
Fractal クラスのrespond()
メソッドを使用すると、このプロセスをもう少し合理化できます。
return fractal($books, new BookTransformer())->respond();
最初のパラメータとして応答コードを渡し、オプションでいくつかのヘッダーを 2 番目のパラメータとして渡すことができます。
return fractal($books, new BookTransformer())->respond(403, ['a-header' => '値','another-header' => '別の値', ]);
json エンコード オプションを 3 番目のパラメーターとして渡すことができます。
return fractal($books, new BookTransformer())->respond(200, [], JSON_PRETTY_PRINT);
コールバックを使用してステータス コードとヘッダーを設定することもできます。
IlluminateHttpJsonResponse を使用します;return fractal($books, new BookTransformer())->respond(function(JsonResponse $response) {$response->setStatusCode(403) ->header('ヘッダー', '値') ->withHeaders(['another-header' => '別の値','yet-another-header' => 'さらに別の値', ]); });
Laravel の Macroable 特性を使用して、Fractal クラスにメソッドを追加できます。リクエストのメタデータに統計を追加したいとします。コードを煩雑にすることなく追加できます。
SpatieFractalフラクタルを使用します。 Fractal::macro('stats', function ($stats) {// 必要に応じて渡された統計を変換しますreturn $this->addMeta(['stats' => $stats]); });fractal($books, new BookTransformer())->stats(['runtime' => 100])->respond();
make:transformer
コマンドを実行すると、ダミーのトランスフォーマーをすばやく生成できます。デフォルトでは、 appTransformers
ディレクトリに保存されます。
設定ファイルの名前をlaravel-fractal
からfractal
に変更します。
v3
league/fractal
をspatie/fractalistic
に置き換えるために導入されました。 Lumen のサポートは終了しました。コードを変更することなく、Laravel アプリケーションをv2
からv3
にアップグレードできるはずです。
ほとんどの場合、コードにまったく変更を加えないか、軽微な変更を加えるだけでv2
にアップグレードできます。
resourceName
withResourceName
に名前変更されました。
このパッケージのv2
がタグ付けされた主な理由は、League による基礎となる Fractal の v0.14 に重大な変更が含まれているためです。 v2 でLeagueFractalSerializerJsonApiSerializer
を使用する場合、 links
キーにはself
、 first
、 next
、 last
が含まれます。
最近の変更点の詳細については、CHANGELOG を参照してください。
$コンポーザーテスト
詳細については、「貢献」を参照してください。
セキュリティに関するバグを見つけた場合は、問題トラッカーを使用する代わりに [email protected] にメールを送信してください。
フリーク・ファン・デル・ヘルテン
すべての貢献者
MIT ライセンス (MIT)。詳細については、ライセンス ファイルを参照してください。