Das Paket bietet eine schöne und einfache Hülle für Fractal zur Verwendung in Ihren Laravel-Anwendungen. Wenn Sie nicht wissen, was Fractal macht, werfen Sie einen Blick auf das Intro. Kurz gesagt ist Fractal sehr nützlich, um Daten vor der Verwendung in einer API zu transformieren.
Die Verwendung fraktaler Daten kann wie folgt transformiert werden:
use LeagueFractalManager;use LeagueFractalResourceCollection;$books = [ ['id' => 1, 'title' => 'Hogfather', 'characters' => [...]], ['id' => 2, 'title' => 'Game Of Kill Everyone', 'characters' => [...]] ];$manager = new Manager();$resource = new Collection($books, new BookTransformer());$manager->parseIncludes('characters');$manager->createData($resource)->toArray() ;
Dieses Paket erleichtert diesen Vorgang ein wenig:
Fraktal() ->collection($books) ->transformWith(new BookTransformer()) ->includeCharacters() ->toArray();
Liebhaber von Fassaden werden sich freuen, dass für eine Fassade gesorgt ist:
Fractal::collection($books)->transformWith(new BookTransformer())->toArray();
Für die schnelle Datentransformation steht auch eine sehr kurze Syntax zur Verfügung:
fractal($books, new BookTransformer())->toArray();
Sie können auch direkt aus einer Laravel-Sammlung transformieren:
Collect($books)->transformWith(new BookTransformer());
Die Transformation direkt aus einer Laravel-Sammlung ist besonders nützlich für Eloquent-Ergebnisse:
Users::all()->transformWith(new UserTransformer())->toArray();
Spatie ist eine Webdesign-Agentur mit Sitz in Antwerpen, Belgien. Eine Übersicht aller unserer Open-Source-Projekte finden Sie auf unserer Website.
Wir investieren viele Ressourcen in die Erstellung erstklassiger Open-Source-Pakete. Sie können uns unterstützen, indem Sie eines unserer kostenpflichtigen Produkte kaufen.
Wir freuen uns sehr, dass Sie uns eine Postkarte aus Ihrer Heimatstadt schicken und erwähnen, welches unserer Pakete Sie verwenden. Unsere Adresse finden Sie auf unserer Kontaktseite. Wir veröffentlichen alle erhaltenen Postkarten auf unserer virtuellen Postkartenwand.
Sie können das Paket über Composer abrufen:
Komponist benötigt Spatie/Laravel-Fraktal
Das Paket registriert sich automatisch.
Wenn Sie den Standard-Serializer, den Standard-Paginator oder die Standard-Fraktalklasse SpatieFractalFractal
ändern möchten, müssen Sie die Konfigurationsdatei veröffentlichen:
PHP-Artist-Anbieter:publish --provider="SpatieFractalFractalServiceProvider"
Wenn Sie auf Laravel 5.5 aktualisieren, sollte die vorhandene Konfigurationsdatei von laravel-fractal.php in fractal.php umbenannt werden
Dies ist der Inhalt der veröffentlichten Datei:
return [/* * Der Standard-Serializer, der bei der Durchführung einer Transformation verwendet werden soll. Es * kann leer gelassen werden, um die Standardeinstellung von Fractal zu verwenden. Dies kann entweder ein *-String oder eine LeagueFractalSerializerSerializerAbstract-Unterklasse sein. */'default_serializer' => '',/* Der Standard-Paginator, der bei der Durchführung einer Transformation verwendet werden soll. Es * kann leer gelassen werden, um die Standardeinstellung von Fractal zu verwenden. Dies kann entweder ein *-String oder eine LeagueFractalPaginatorPaginatorInterface-Unterklasse sein. */'default_paginator' => '',/* * LeagueFractalSerializerJsonApiSerializer verwendet diesen Wert * als Präfix für generierte Links. Auf „null“ setzen, um dies zu deaktivieren. */'base_url' => null,/* * Wenn Sie die Standardinstanz SpatieFractalFractal * überschreiben oder erweitern möchten, geben Sie den Namen der Klasse an, die Sie verwenden möchten. */'fractal_class' => SpatieFractalFractal::class,'auto_includes' => [/* * Wenn aktiviert, fügt Fractal automatisch die Includes hinzu, deren * Namen im Anforderungsparameter „include“ vorhanden sind. */'enabled' => true,/* * Der Name des Schlüssels in der Anfrage, in dem wir nach den einzuschließenden Includes suchen sollen. */'request_key' => 'include', ],'auto_excludes' => [/* * Wenn aktiviert, fügt Fractal automatisch die Ausschlüsse hinzu, deren * Namen im Anforderungsparameter „exclude“ vorhanden sind. */'enabled' => true,/* * Der Name des Schlüssels in der Anfrage, nach dem wir nach den auszuschließenden Ausschlüssen suchen sollen. */'request_key' => 'exclude', ],'auto_fieldsets' => [/* * Wenn aktiviert, fügt Fractal automatisch die Feldsätze hinzu, deren * Namen im Anforderungsparameter „fields“ vorhanden sind. */'enabled' => true,/* * Der Name des Schlüssels in der Anfrage, in dem wir nach den zu analysierenden Feldsätzen suchen sollen. */'request_key' => 'fields', ], ];
Weitere Informationen zu allen Methoden, die dieses Paket bietet, finden Sie in der Dokumentation von spatie/fractalistic
.
In allen Codebeispielen können Sie fractal()
anstelle von Fractal::create()
verwenden.
Um eine Antwort mit JSON-Daten zurückzugeben, können Sie dies in einer Laravel-App tun.
$books = fractal($books, new BookTransformer())->toArray();return Response()->json($books);
Die Methode respond()
der Fractal-Klasse kann diesen Prozess etwas rationalisieren.
return fractal($books, new BookTransformer())->respond();
Sie können einen Antwortcode als ersten Parameter und optional einige Header als zweiten übergeben
return fractal($books, new BookTransformer())->respond(403, ['a-header' => 'a value','another-header' => 'another value', ]);
Als dritten Parameter können Sie JSON-Codierungsoptionen übergeben:
return fractal($books, new BookTransformer())->respond(200, [], JSON_PRETTY_PRINT);
Sie können den Statuscode und die Header auch über einen Callback festlegen:
use IlluminateHttpJsonResponse;return fractal($books, new BookTransformer())->respond(function(JsonResponse $response) {$response->setStatusCode(403) ->header('a-header', 'a value') ->withHeaders(['another-header' => 'another value','yet-another-header' => 'noch ein anderer Wert', ]); });
Sie können der Fractal-Klasse mithilfe der Macroable-Eigenschaft von Laravel Methoden hinzufügen. Stellen Sie sich vor, Sie möchten den Metadaten Ihrer Anfrage einige Statistiken hinzufügen. Sie können dies tun, ohne Ihren Code zu überladen:
benutze SpatieFractalFractal; Fractal::macro('stats', function ($stats) {// transformiert die übergebenen Statistiken nach Bedarf hierreturn $this->addMeta(['stats' => $stats]); });fractal($books, new BookTransformer())->stats(['runtime' => 100])->respond();
Sie können den Befehl make:transformer
ausführen, um schnell einen Dummy-Transformator zu generieren. Standardmäßig wird es im appTransformers
-Verzeichnis gespeichert.
Benennen Sie Ihre Konfigurationsdatei von laravel-fractal
in fractal
v3
wurde eingeführt, um league/fractal
durch spatie/fractalistic
zu ersetzen. Die Unterstützung für Lumen wurde eingestellt. Sie sollten in der Lage sein, eine Laravel-Anwendung ohne Codeänderungen von v2
auf v3
zu aktualisieren.
In den meisten Fällen können Sie einfach auf v2
aktualisieren, ohne oder nur geringfügige Änderungen an Ihrem Code vorzunehmen:
resourceName
wurde in withResourceName
umbenannt.
Der Hauptgrund, warum v2
dieses Pakets markiert wurde, liegt darin, dass Version 0.14 des zugrunde liegenden Fractals der Liga bahnbrechende Änderungen enthält. Wenn Sie den LeagueFractalSerializerJsonApiSerializer
in Version 2 verwenden, enthält der links
-Schlüssel self
, first
, next
und last
.
Weitere Informationen zu den letzten Änderungen finden Sie im CHANGELOG.
$ Composer-Test
Weitere Informationen finden Sie unter BEITRAGEN.
Wenn Sie einen Sicherheitsfehler gefunden haben, senden Sie bitte eine E-Mail an [email protected], anstatt den Issue-Tracker zu verwenden.
Freek Van der Herten
Alle Mitwirkenden
Die MIT-Lizenz (MIT). Weitere Informationen finden Sie in der Lizenzdatei.